创建自定义UITableViewCell

时间:2012-09-03 13:56:49

标签: iphone core-data uitableview

我在创建自定义单元格时面临以下异常。

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

除此之外,我还完成了以下步骤:

  1. 我已将CustomCell.xib的文件所有者授予MasterTableView.h
  2. 我已将自定义单元格的出口发送到MasterTableView.h
  3. 我已将两个UILabel的商店分配到CustomCell.h
  4. 我已将Cell作为IB中的单元标识符
  5. 我在Dropbox中共享了整个项目,可在以下链接中找到。你也可以检查那个。我想知道它有什么不对。

    Download link

    请告诉我缺少的步骤.. 提前谢谢。

    PS: - 我在我的项目中使用过CoreData。没有核心数据,这个步骤给了我正确的期望输出,但不是在这个项目中。我已经检查了默认单元格。它运作良好。

3 个答案:

答案 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,我附上图片供您参考。它们不应连接到文件所有者,从文件所有者中删除连接。

您还会注意到行的大小不正确,您必须在表格视图中指定行大小。

enter image description here

答案 2 :(得分:0)

检查是否已从属性设置CustomCell的类。 enter image description here