0

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

我猜单元格标识符在某种程度上不是“全局”的,并且 tableVC 在它是另一个 VC 的孩子时看不到它们?

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

4

1 回答 1

0

即使你还没有跟进你的代码,我敢打赌这是你的问题。

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

于 2013-02-05T16:59:41.313 回答