"Selector no reconocido enviado a instancia" al usar una celda de tabla personalizada

He implementado una celda de tabla personalizada y estoy recibiendo un error de time de ejecución ("selector no reconocido enviado a instancia") cuando la tabla ingresa a cellForRowAtIndexPath. El error se produce al intentar crear una instancia de la celda personalizada. Lo he logrado con éxito antes, pero ahora el error no desaparecerá. Tengo una celda prtotype y su atributo de class personalizado se establece en la subclass UITableViewCell de celda personalizada. Aquí está la celda personalizada:

#import "FavoriteCell.h" @implementation FavoriteCell @synthesize lblGaugeID, lblMainTitle, bgImage; - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { bgImage = [UIImage imageNamed:@"tableCellBG.png"]; self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { UIColor *transparentBG = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; UIColor *foregroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]; //UIColor *shadowColot = [UIColor colorWithWhite:0.75 alpha:1.0]; CGSize size = self.contentView.frame.size; self.backgroundView = [[UIImageView alloc] initWithImage:bgImage]; self.lblMainTitle = [[UILabel alloc] initWithFrame:CGRectMake(8.0, 0.5, size.width-16, size.height-40)]; [self.lblMainTitle setFont:[UIFont systemFontOfSize:12.0]]; [self.lblMainTitle setTextAlignment:NSTextAlignmentLeft]; [self.lblMainTitle setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; [self.lblMainTitle setBackgroundColor:transparentBG]; self.lblGaugeID = [[UILabel alloc] initWithFrame:CGRectMake(20.0, 31.0, size.width-16, size.height-40)]; [self.lblGaugeID setFont:[UIFont boldSystemFontOfSize:15.0]]; [self.lblGaugeID setTextAlignment:NSTextAlignmentLeft]; [self.lblGaugeID setTextColor:foregroundColor]; [self.lblGaugeID setShadowOffset:CGSizeMake(0.2 , 0.2)]; [self.lblGaugeID setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; [self.lblGaugeID setBackgroundColor:transparentBG]; [self.contentView addSubview:lblGaugeID]; [self.contentView addSubview:lblMainTitle]; } return self; } @end 

y aquí es donde se instata (extraído de mi class de controller de vista):

 -(FavoriteCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellIdentifier = @"favoriteCell"; FavoriteCell *cell = (FavoriteCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; //error if(cell == nil){ cell = [[FavoriteCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } NSString *siteName = [faveKeys objectAtIndex:indexPath.row]; [cell.lblMainTitle setText:siteName]; [cell.lblGaugeID setText:[allFavorites objectForKey:siteName]]; return cell; } 

Aquí está el post de error completo:

* Terminar la aplicación debido a la exception no detectada 'NSInvalidArgumentException', motivo: '- [__ NSCFConstantString instanciarWithOwner: opciones:]: selector no reconocido enviado a la instancia 0x24bb0'

¿Alguien puede ofrecer algún consejo sobre qué revisar? ¡Gracias! Vivian

El uso de - (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier fue una buena idea si hubiera definido su celda personalizada en un file NIB separado . El problema fue que pasó un object NSString en lugar de un UINib.

Haga esto en su lugar:

[self.tblFavorites registerNib:[UINib nibWithNibName:@"favoriteCellView" bundle:nil] forCellReuseIdentifier:@"favoriteCell"];

Sin embargo, desde que utilizó una celda prototipo en lugar de una NIB separada, no hay necesidad de hacer esto en absoluto. En su lugar, solo necesita asegurarse de que el identificador de reutilización de la celda del prototipo esté configurado correctamente (en este caso, "celda favorita").