“为标识符注册的无效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
}
我错过了什么?
答案 0 :(得分:0)
您需要将顶级对象设置为DHTableViewCell
子类而不是文件的所有者。