当UITableVC包含在另一个VC中时,找不到单元标识符

时间:2013-02-05 16:43:32

标签: ios objective-c uitableview

我正在尝试使用一些自定义单元格创建表格视图,但我遇到了问题。一切都设置正确,当我使用这个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看不到它们?

如果您需要查看更多代码,请提供帮助并告诉我们!

1 个答案:

答案 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:是不同的方法。