注册自定义uitableviewcell时出错

时间:2014-05-26 20:59:11

标签: ios uitableview

“为标识符注册的无效nib(myGoal) - nib必须只包含一个必须是UITableViewCell实例的顶级对象”

这就是我不断获得的例外。我正在使用故事板和XIB。

在我的故事板中,我在导航视图中有一个tableview。 tableview设置为动态原型,原型单元的数量为零。原因是因为我想以编程方式添加自定义单元格。

我第一次以编程方式添加单元格时,我使用的是一种通用单元格样式。它会工作!

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"myGoal"];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myGoal"
                                                        forIndexPath:indexPath];
    //do stuff with cell
}

它会让我有一个带有默认单元格样式的tableview,它有一个标签。

接下来我想自定义我的单元格,以便它有多个标签和一些额外的按钮。通常,我会在故事板界面构建器中执行此操作,但这次我需要以编程方式执行此操作。

所以我创建了一个自定义的tableviewcell类以及它的Xib对应物。在Xib我设计了它我想要的。问题在于让这个单元格显示在tableview中。

tableview是否在故事板中并且tableviewcell在xib中是否重要?

为了注册自定义笔尖,我做了几乎与上面相同的事情,但它崩溃了:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UINib *dhCustomNib = [UINib nibWithNibName:@"DHTableViewCell" bundle:nil];
    [self.tableView registerNib:dhCustomNib forCellReuseIdentifier:@"myGoal"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    DHTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myGoal"
                                                        forIndexPath:indexPath]; //It crashes at this point
    //do stuff with cell
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您需要将顶级对象设置为DHTableViewCell子类而不是文件的所有者。

enter image description here