Un XIB para múltiples subclasss UITableViewCell

Estoy intentando usar un file XIB para varios types de subclasss UITableViewCell personalizadas (mismos IBOutlets, mismo aspecto, diferentes methods y lógica).

¿Cómo puedo hacer eso?

Estrictamente hablando, el marco no impone un enlace estricto de un xib a su propietario de file. Puede usar el siguiente código para cargar una punta:

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCustomCell" owner:nil options:nil]; EXFirstCustomCell *firstCell = (EXFirstCustomCell*)[nibContents objectAtIndex:0]; firstCell.firstView = [firstCell.contentView viewWithTag:VIEW_TAG]; firstCell.button = [firstCell.contentView viewWithTag:BUTTON_TAG]; 

Según su lógica comercial, puede arrojar el resultado de [nibContents objectAtIndex:0]; para adaptarse a su class UITableViewCell personalizada.

Edición n. ° 1:

Typecasting es generalmente una mala idea, ya que el firstCell seguirá siendo un tipo de class UITableViewCell . Una buena idea sería crear su propio constructor, pasar los nibContents como argumento y hacer sus asignaciones de vista allí.

Editar n. ° 2

Hice un poco de experimentación y así es como logré que esto funcione:

  1. Cree una vista xib independiente y diseñe su celda allí. Tiene que ser una vista. Lo que está haciendo aquí es que está definiendo cómo va a ser contenidoView.

  2. Cargue todas las vistas desde el xib. NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCommonContentView" owner:nil options:nil];

  3. Cree un constructor de su celda personalizada así:

     -initWithNibContents:(NSArray*)nibContents { self = [super init] if(self) { self.contentView = [nibContents objectAtIndex:0]; self.button = [self.contentView viewWithTag:BUTTON_TAG]; self.view = [self.contentView viewWithTag:VIEW_TAG]; } }