我正在尝试使用一些自定义单元格创建表格视图,但我遇到了问题。一切都设置正确,当我使用这个UITableVC作为初始VC它一切正常。但是当我尝试将它作为子VC添加到另一个VC时,我收到此错误:
Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:4460
2013-02-05 18:37:25.704 SalesBot[16284:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier Statement Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
我没有改变任何其他内容,我只是将故事板中的箭头移动到另一个VC以使其初始化。
以下是我将UITableVC子类作为子项添加到另一个VC的方法:
self.statementTableViewController = [[SBStatementTableViewController alloc] init];
[self.view addSubview:self.statementTableViewController.view];
[self.statementTableViewController.view setFrame:self.contentFrame];
以下是我将一个单元格出列的方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Statement Cell";
SBStatementCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
return cell;
}
我理解上面的代码只是iOS6,我稍后会担心iOS 5:)
我猜测单元格标识符在某种程度上不是“全局”的,而当它是另一个VC的孩子时,tableVC看不到它们?
如果您需要查看更多代码,请提供帮助并告诉我们!
答案 0 :(得分:0)
即使你还没有跟进你的代码,我也愿意打赌这是你的问题。
取自: Assertion failure in dequeueReusableCellWithIdentifier:forIndexPath:
您正在使用dequeueReusableCellWithIdentifier:forIndexPath:方法。该方法的文档说明了这一点:
Important: You must register a class or nib file using the
registerNib:forCellReuseIdentifier: or registerClass:forCellReuseIdentifier:
method before calling this method.
您没有为重用标识符“Cell”注册一个nib或类。
查看你的代码,你似乎期望dequeue方法返回nil,如果它没有一个单元格给你。您需要使用dequeueReusableCellWithIdentifier:对于该行为:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
请注意,dequeueReusableCellWithIdentifier:和dequeueReusableCellWithIdentifier:forIndexPath:是不同的方法。