自定义的UITableViewCell给了我:这个类不是关键值编码兼容

首先,这个讨论并没有解决我的问题。

自定义UITableViewCell子类:该类不是符合编码的键值

build立:

我在MainViewController有一个Person对象的数组。 要在AllContactsViewController中的UITableView中显示对象。

问题:

所有使用默认的UITableViewCell时的预期工作。 当我使用我的自定义TableCell我得到一个错误,指出这个类不是关键值编码兼容。

这个错误发生之后,我用我的TableCell类连接IB三个outlets中的任何一个。

注意:

TableCell有三个属性: nameemail标签+ imageView

希望你能帮忙。

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

更新:

也许截图会帮助IB。

在这里输入图像说明

添加完整的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 

如果你连接文件所有者的出口,你应该做的不同:

1 – 定义你的TableCell类的UITableViewCell的类:

在这里输入图像说明

2 – 不是从文件的所有者,而是从对象列表中的TableCell连接出口

连接插座

如果您使用的是Xcode 6 GM,那么IB中有一个错误可能导致这个错误。 我不认为OP是有这个问题,因为它更明显(你可以在日志中看到一个“未定义的类MyXXXCell”),但因为你像我这样从谷歌得到这个问题,只是尝试在IB中input类名并再次点击进入,一旦它真的保存在storyboard / xml文件中就没事了。

我有同样的问题,在这里或其他讨论中的任何意见帮助我…最后,我只是做了一个干净的事业,我很确定我做的一切正确,是的…神奇的工作!

在Git合并并解决了一些冲突之后,这发生在我身上。 它搞砸了我的XCode项目。

我尝试了所有的StackOverflow。 起初我以为我的Custom类.m文件没有被添加到编译源类列表中。 但是,这是一个例子,但是即使添加它,它也给了我同样的问题。

我如何解决:

  1. 我保留了我的.xib文件及其支持自定义类.m和.h文件的备份。
  2. 然后清理项目并尝试通过XCode运行应用程序(这可能不起作用)
  3. 然后重新添加文件到XCode项目,它将工作。

干杯!