我在创建自定义单元格时面临以下异常。
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MasterTableView 0xb612b30> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key address.'
我使用的委托功能如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
NSArray *top=[[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:self options:nil];// on this line program received SIGABRT
for (id current in top) {
if ([current isKindOfClass:[UITableViewCell class]]) {
cell=(CustomCell *)current;
break;
}
}
}
// Configure the cell...
cell.name.text=@"name";
cell.address.text=@"Address";
return cell;
}
除此之外,我还完成了以下步骤:
CustomCell.xib
的文件所有者授予MasterTableView.h
MasterTableView.h
UILabel
的商店分配到CustomCell.h
Cell
作为IB中的单元标识符我在Dropbox中共享了整个项目,可在以下链接中找到。你也可以检查那个。我想知道它有什么不对。
请告诉我缺少的步骤.. 提前谢谢。
PS: - 我在我的项目中使用过CoreData。没有核心数据,这个步骤给了我正确的期望输出,但不是在这个项目中。我已经检查了默认单元格。它运作良好。
答案 0 :(得分:1)
在自定义单元格xib中,将单元格对象类型更改为Customcell
,将FileOwner类型更改为NSObject
。然后从单元格对象设置出口。
答案 1 :(得分:1)
我在一个示例项目中编译并运行了代码,它完全没有问题。确保在“接口”构建器中已连接所有内容,如前所述!
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *top = [[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:self options:nil];
for (id current in top) {
if ([current isKindOfClass:[UITableViewCell class]]) {
cell=(CustomCell *)current;
break;
}
}
}
cell.title.text = @"Custom cell labels";
return cell;
}
编辑:
您在Interface Builder中连接了两次IBOutlets,我附上图片供您参考。它们不应连接到文件所有者,从文件所有者中删除连接。
您还会注意到行的大小不正确,您必须在表格视图中指定行大小。
答案 2 :(得分:0)
检查是否已从属性设置CustomCell的类。