Custom UITableViewCell gibt mir: diese Klasse ist nicht die key-value-coding-konform
Zunächst diese Diskussion haben mein problem nicht lösen.
Custom UITableViewCell Unterklasse: Diese Klasse ist nicht ein key-value-coding-konform
Setup:
Ich habe ein array von Person-Objekten in MainViewController
.
Möchten Sie die Objekte in einem UITableView
im AllContactsViewController
.
Problem:
Alles funktioniert wie erwartet, wenn Sie die Standardeinstellung verwenden UITableViewCell
.
Wenn ich mit meinem custom TableCell
bekomme ich eine Fehlermeldung zu zeigen
das diese Klasse ist nicht die key-value-coding-konform.
Dieser Fehler tritt direkt, nachdem ich mit keinem meiner drei outlets
im IB
mit meinem TableCell
Klasse.
Hinweis:
TableCell
hat drei Eigenschaften: eine name
& email
label + imageView
.
Hoffe, Sie können helfen.
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;
}
UPDATE:
Vielleicht ein screenshot helfen, aus IB.
Hinzugefügt voll 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
- Keine Schlüssel-Wert-konform für welche Taste? Geben Sie die genaue Fehlermeldung. - Haben Sie überprüft, dass
cell = [array objectAtIndex:0]
tatsächlich gibt eine Instanz von IhrTableCell
Klasse? - Hängt von der
outlet
ich eine Verbindung in IB. Ich Verbinde diename
label
, stürzt die app, Verbinde ich dieimageView
stattdessen stürzt die app. Sieht aus wie ich habe ein Problem mit ALLEN Eigenschaften, die ich deklariertTableCell
ich bin mir sicher, dass ich eine Instanz zurückTableCell
sonst die Fehlermeldung muss eine andere sein, da der Fehler-Punkte an die Steckdosen habe ich inTableCell
- Genaue Fehlermeldung:[<AllContactsViewController 0x7f62ad0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key imageView.'
- Die Fehlermeldung Punkte zu
AllContactsViewController
! HinzufügenNSLog(@"class=%@", [cell class]);
um Ihren code zu überprüfen. - Die Ausgabe der Konsole: 2012-08-16 14:12:57.553 Kontakte+[15330:c07] class=TableCell
- Überprüfen Sie heraus diese Antwort stackoverflow.com/a/13300245/163936
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine Verbindung der Auslässe von der Besitzer der Datei, die Sie tun sollten, anders:
1 - Definieren Sie die Klasse UITableViewCell zu Ihrem TableCell Klasse:
2 - Verbinden Sie die Steckdosen nicht vom Datei-Besitzer, aber von TableCell in der Objekte-Liste:
class
bereits zuTableCell
. So, wenn ich ctrl-klicken Sie den File ' s Owner sehe ich dasoutlets
ich habe erklärt inTableCell
TableViewCELL
zu meiner benutzerdefiniertenclass
. STRG-Klickcell
angeschlossen und dieoutlets
aber der gleiche Fehler. Ich habe meinem ursprünglichen post bearbeitet und Hinzugefügt einen screenshot. Vielleicht hilft es ja.The only IBOutlet in AllContactsViewController I have is the UITableView
: dieses in Ihrem .xib-Datei oder im header? Als ich sagteGo to your AllContactsViewController
ich war auf öffnen Sie im Interface Builder.Wenn Sie mit Xcode 6 GM, da ist ein Fehler in der IB führen kann dieser Fehler. Ich glaube nicht, dass die OP wurde mit diesem problem, denn es ist mehr offensichtlich, (sehen Sie eine "undefined Klasse MyXXXCell" im log), aber in der Ursache, die Sie bekommen auf diese Frage von google, wie ich, einfach versuchen, geben Sie den Namen der Klasse in IB und drücken Sie erneut die EINGABETASTE, und wenn es einmal tatsächlich gespeichert wird in der storyboard - /xml-Datei, es wird gut werden.
Ich hatte das gleiche problem und die Kommentare hier oder in anderen Diskussionen hat mir geholfen...am Ende ich habe gerade eine saubere Sache ich war ziemlich sicher, ich mache alles richtig und ja...magisch gearbeitet!
Passiert mir das nur nach Git merge und lösen einige Konflikte.
Hatte es vermasselt meine XCode-Projekt.
Ich habe versucht, alle über den StackOverflow. Zuerst dachte ich, meine eigene Klasse .m-Datei wurde nicht Hinzugefügt, um das Kompilieren von Quellen der Klasse list. Aber es ist ein Fall, aber auch nach dem hinzufügen, es gab mir die gleichen Fehler wieder.
Wie ich das gelöst:
Prost!