2010-10-15 24 views
5

Sto cercando di creare una vista tabella personalizzata utilizzando una cella che ho creato in IB. Sto ottenendo uno strano errore:Errore UITableViewCell personalizzato

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

Tutto è cablato correttamente in IB al controller di cella. Non sono proprio sicuro del motivo per cui ciò sta accadendo.

Questo è ciò che il mio cellForRowAtIndexPath assomiglia:

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

} 

Qualcuno ha visto questo tipo di errore prima? Fatemi sapere se avete bisogno di ulteriori informazioni ...

+0

Richiesto codice completo per la funzione cellForRowAtIndexPath – SegFault

+0

È stato aggiornato. – gabaum10

+0

Sembra che tu stia cercando di inserire un valore per "postText" in qualcosa che non sia un NSDictionary? :) – willcodejavaforfood

risposta

5

Che cosa è veramente strana è che si lamenta che la classe non è BroadcastViewController KVC conforme alla postText.

Per quanto posso vedere, postText è un'etichetta nella cella, quindi l'IBOutlet deve essere nella classe BroadcastTableViewCell. Quindi controlla dove hai collegato l'etichetta postText in IB. Inoltre, è possibile che tu abbia un IBOutlet nel tuo controller di visualizzazione per questa etichetta, lo hai rimosso ma hai dimenticato di eliminare il link in IB. Comunque, da qualche parte c'è il tuo problema. Il fatto che tu abbia l'errore su quella linea è solo perché è lì che carichi il tuo NIB, non ha nulla a che fare con la cella stessa o con il proprietario.

+0

OK, ho controllato e ricontrollato le connessioni IB: tutto è connesso correttamente nella classe BroadcastTableViewCell Non ci sono connessioni permanenti con nessun altro controller di visualizzazione, non ha assolutamente senso ... – gabaum10

+0

Hai capito. Era qualcosa nel pennino, grazie :) – gabaum10

1

Potrebbe avere qualcosa a che fare con dequeueReusableCellWithIdentifier che restituisce un UITableViewCell *.

Io normalmente faccio:

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

impostare il proprietario a zero.

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

Ok, vedo come la trasmissione sarebbe una buona idea, ma ciò non aiuta ancora sul caricamento iniziale, quando la prima cella è nulla. Hai bisogno di qualcosa da maneggiare: "if (cell == nil)" – gabaum10

+0

Dopo aver visto ciò, è praticamente esattamente quello che faccio ora, solo un modo più lungo di metterlo ... – gabaum10

+0

NSArray * nib = [[NSBundle mainBundle] loadNibNamed: proprietario di CellNib: nil options: nil]; Imposta il proprietario su zero. –

1

Ok capito. Le connessioni in IB erano davvero scorrette. Li ho fatti collegare al proprietario del file in contrasto con gli oggetti reali. Ho intenzione di dare anche questo steliano perché mi ha ordinato di dare un'occhiata al pennino. Grazie per tutto il vostro aiuto!

Problemi correlati