2010-10-15 8 views
5

J'essaye de construire une vue de table personnalisée en utilisant une cellule que j'ai construit dans IB. Je reçois une erreur étrange:Personnalisé UITableViewCell erreur

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

Tout est câblé correctement dans IB au contrôleur de cellule. Pas vraiment sûr pourquoi cela se passe.

C'est ce que mon cellForRowAtIndexPath ressemble:

- (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; 

} 

Tout le monde voit ce genre d'erreur avant? Faites-moi savoir si vous avez besoin de plus d'informations ...

+0

Besoin de code complet pour la fonction cellForRowAtIndexPath – SegFault

+0

A été mis à jour. – gabaum10

+0

On dirait que vous essayez d'insérer une valeur pour 'postText' dans quelque chose qui n'est pas un NSDictionary? :) – willcodejavaforfood

Répondre

5

Ce qui est vraiment étrange est qu'il se plaint que la classe BroadcastViewController n'est pas KVC conforme à postText. Pour autant que je puisse voir, postText est une étiquette dans votre cellule, donc l'IBOutlet pour cela devrait être dans la classe BroadcastTableViewCell. Vérifiez donc où vous avez lié l'étiquette postText dans IB. En outre, il se peut que vous ayez un IBOutlet dans votre contrôleur de vue pour cette étiquette, vous l'avez supprimé mais vous avez oublié de supprimer le lien dans IB. De toute façon, il y a quelque part ton problème. Le fait que vous ayez l'erreur sur cette ligne est juste parce que c'est là que vous chargez votre NIB, cela n'a rien à voir avec la cellule elle-même ou avec le propriétaire.

+0

Ok, bien J'ai vérifié et vérifié les connexions IB Tout est correctement connecté dans la classe BroadcastTableViewCell Il n'y a pas de connexions persistantes avec un autre contrôleur de vue Cela n'a vraiment aucun sens ... – gabaum10

+0

Vous l'avez compris. C'était quelque chose dans la plume Merci :) – gabaum10

1

Cela peut avoir un rapport avec dequeueReusableCellWithIdentifier renvoyant un UITableViewCell *.

Je fais ce normaly:

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

Définissez le propriétaire à zéro.

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

Ok, je vois comment couler ce serait une bonne idée, mais cela n'aide pas sur la charge initiale, quand la première cellule est nulle. Besoin de quelque chose à gérer: "if (cell == nil)" – gabaum10

+0

Après avoir regardé cela, c'est à peu près ce que je fais maintenant, juste une façon plus longue de le mettre ... – gabaum10

+0

NSArray * nib = [[NSBundle mainBundle] loadNibNamed: propriétaire de CellNib: options nil: nil]; Définir le propriétaire à zéro. –

1

Ok l'a compris. Les connexions dans IB étaient en effet incorrectes. Je les ai liés au propriétaire du fichier par opposition aux objets réels. Je vais le donner aussi à Stelian parce qu'il m'a demandé de vérifier la plume. Merci pour votre aide!

Questions connexes