2010-10-15 20 views
5

Estoy intentando crear una vista de tabla personalizada usando una celda que construí en IB. Me aparece un error extraño:Error personalizado de UITableViewCell

<BroadcastViewController 0x4b4f5f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key postText. 

Todo está conectado correctamente en IB al controlador de la celda. No estoy seguro de por qué está sucediendo esto.

Esto es lo que se ve mi cellForRowAtIndexPath como:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

//Get the folder object of interest 
Broadcast *messageAtIndex = [self.messages objectAtIndex:indexPath.row] ; 

static NSString *CellIdentifier = @"BroadcastTableViewCell"; 
static NSString *CellNib = @"BroadcastTableViewCell"; 

BroadcastTableViewCell *cell = (BroadcastTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    //ERRORING ON THIS LINE... 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil]; 
    cell = (BroadcastTableViewCell *)[nib objectAtIndex:0]; 
} 


cell.postText.text = messageAtIndex.replyText; 
cell.authorName.text = messageAtIndex.postCreatorFirstName; 
cell.postDate.text = messageAtIndex.creationDate; 

return cell; 

} 

Alguien ha visto este tipo de error antes? Avíseme si necesita más información ...

+0

Necesita el código completo para la función cellForRowAtIndexPath – SegFault

+0

Ha sido actualizado. – gabaum10

+0

Parece que está intentando insertar un valor para 'postText' en algo que no es un NSDictionary? :) – willcodejavaforfood

Respuesta

5

Lo que es realmente extraño es que se queja de que la clase BroadcastViewController no es compatible con KVC postText.

Por lo que puedo ver, postText es una etiqueta en su celda, por lo que el IBOutlet para esto debería estar en la clase BroadcastTableViewCell. Así que consulte dónde ha vinculado la etiqueta postText en IB. Además, puede ser que haya tenido un IBOutlet en su controlador de vista para esta etiqueta, lo ha eliminado pero olvidó eliminar el enlace en IB. De todos modos, hay un problema en alguna parte. El hecho de que tenga el error en esa línea es solo porque está allí, carga su NIB, no tiene nada que ver con la celda en sí o con el propietario.

+0

Muy bien, he verificado y comprobado dos veces las conexiones de IB. Todo está conectado correctamente en la clase BroadcastTableViewCell. No hay conexiones persistentes con ningún otro controlador de vista. Realmente no tiene sentido alguno ... – gabaum10

+0

Lo tienes. Fue algo en la punta. Gracias :) – gabaum10

1

Puede tener algo que ver con dequeueReusableCellWithIdentifier que devuelve un UITableViewCell *.

que normaly hacer esto:

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier... 
CustomCell* acell = (CustomCell*)cell; 

establecer el dueño a cero.

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:nil options:nil]; 
+0

Ok, veo cómo la fundición sería una buena idea, pero eso aún no ayuda en la carga inicial, cuando la primera celda es nula. Necesito algo para manejar: "if (cell == nil)" – gabaum10

+0

Después de mirar eso, eso es más o menos lo que hago ahora, solo una forma más larga de ponerlo ... – gabaum10

+0

NSArray * nib = [[NSBundle mainBundle] loadNibNamed: propietario de CellNib: opciones nulas: nil]; Establecer el propietario en cero. –

1

Ok lo resolvió. Las conexiones en IB fueron de hecho incorrectas. Los tuve vinculados al propietario del archivo en lugar de a los objetos reales. Voy a dar esto también a Stelian porque me indicó que echara un vistazo a la punta. ¡Gracias por toda tu ayuda!

Cuestiones relacionadas