自定义的UITableViewCell给了我:这个类不是关键值编码兼容
首先,这个讨论并没有解决我的问题。
自定义UITableViewCell子类:该类不是符合编码的键值
build立:
我在MainViewController
有一个Person对象的数组。 要在AllContactsViewController
中的UITableView
中显示对象。
问题:
所有使用默认的UITableViewCell
时的预期工作。 当我使用我的自定义TableCell
我得到一个错误,指出这个类不是关键值编码兼容。
这个错误发生之后,我用我的TableCell
类连接IB
三个outlets
中的任何一个。
注意:
TableCell
有三个属性: name
和email
标签+ 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文件没有被添加到编译源类列表中。 但是,这是一个例子,但是即使添加它,它也给了我同样的问题。
我如何解决:
- 我保留了我的.xib文件及其支持自定义类.m和.h文件的备份。
- 然后清理项目并尝试通过XCode运行应用程序(这可能不起作用)
- 然后重新添加文件到XCode项目,它将工作。
干杯!