Prima di tutto, questa discussione non ha risolto il mio problema.Custom UITableViewCell mi dà: questa classe non è un valore di codifica conforme
Custom UITableViewCell subclass: This class is not a key value coding-compliant
Setup:
Ho un array di oggetti persona in MainViewController
. Vuoi mostrare gli oggetti in un UITableView
in AllContactsViewController
.
Problema:
Tutte le opere come previsto quando utilizzare il valore predefinito UITableViewCell
. Quando uso la mia personalizzata TableCell
viene visualizzato un errore che indica che questa classe non è conforme ai codici di codifica.
Questo errore si verifica subito dopo la connessione di QUALSIASI dei miei tre outlets
in IB
con la mia classe TableCell
.
Nota:
TableCell
ha tre proprietà: un name
& email
etichetta + imageView
.
Spero che tu possa aiutare.
TableCell.h
#import <UIKit/UIKit.h>
@interface TableCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *emailLabel;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
TableCell.m
#import "TableCell.h"
@implementation TableCell
@synthesize nameLabel, imageView, emailLabel;
AllContactsViewController.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdent = @"TableCell";
TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:cellIdent];
if (cell == nil) {
NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"TableCell" owner:self options:nil];
cell = [array objectAtIndex:0];
}
NSString *firstAndLastnameString =
[NSString stringWithFormat:@"%@ %@",
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] firstName],
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] lastName]];
cell.nameLabel.text = firstAndLastnameString;
cell.emailLabel.text =
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] eMail];
cell.imageView.image =
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] contactPicture];
return cell;
}
U PDATE:
Forse uno screenshot aiuterà da IB.
Aggiunto pieno AllContactsViewController.h
#import <UIKit/UIKit.h>
#import "VCDelegate.h"
#import "TableCell.h"
@interface AllContactsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) id <VCDelegate>delegate;
@property (weak, nonatomic) IBOutlet UITableView *allContactsTableView;
@property (strong, nonatomic) NSMutableArray *allContactsArray;
@property (assign) int currentArrayIndexNumber;
- (IBAction)closeBtnTapped:(id)sender;
@end
Non conforme ai valori-chiave per quale chiave? Dare il messaggio di errore esatto. - Hai verificato che 'cell = [array objectAtIndex: 0]' restituisce effettivamente un'istanza della classe 'TableCell'? –
Dipende dallo 'sbocco' che connetto in IB. Collego il 'name'' label', l'app si blocca, collego 'imageView' invece l'app si blocca. Sembra che abbia un problema con TUTTE le proprietà che ho dichiarato in 'TableCell' Sono sicuro di ottenere un'istanza indietro di' TableCell' altrimenti il messaggio di errore deve essere diverso poiché l'errore punta alle prese che ho in 'TableCell' - Esatto messaggio di errore: '[ setValue: forUndefinedKey:]: questa classe non ha valore di codifica conforme alla chiave imageView.'' –
Il messaggio di errore indica' AllContactsViewController'! Aggiungi 'NSLog (@" class =% @ ", [classe di celle]);' al tuo codice da controllare. –