1

我有一个自定义UITableViewCell类,我想用它来创建自定义表格单元格。我创建了自定义表格单元格的 xib 以及它的头文件和实现文件,都称为RTRepairOrderTableCell.m/.h/.xib.

我的问题是,即使我将表格单元格的重用标识符设置在RTRepairOrderTableCell.xib 文件内部并在表格视图控制器中注册了 xib,但当它尝试出列或创建新单元格时,我仍然遇到断言错误利用。

在我的视图(表)控制器内部,我有以下内容:

- (void)viewDidLoad
{
    [super viewDidLoad];
    //Load the nib file
    UINib *nib = [UINib nibWithNibName:@"RTRepairOrderTableCell"
                                bundle:nil];
    // Register this Nib, which contains the cell
    [self.tableView registerNib:nib
         forCellReuseIdentifier:@"RTRepairOrderTableCell"];    
}

这里没有错误,它完成viewDidLoad得很好。

在我的里面cellForRowAtIndexPath我有以下内容:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{       
    RTRepairOrderTableCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RTRepairOrderTableCell" forIndexPath:indexPath];      
    return cell;
}

根据我看过的每个教程,只要我在 xib 文件中正确设置了重用标识符,并且我viewDidLoad在将显示表格单元格的视图控制器类中注册了该 xib,这应该可以工作,所以我在关于我为什么得到的损失

*** Assertion failure in -[UITableView _dequeueReusableViewOfType:withIdentifier:], /SourceCache/UIKit/UIKit-2935.138/UITableView.m:5413
4

4 回答 4

10

原来我UIImage在 nib 文件内但在该UITableViewCell区域之外有一些孤立的对象,所以它抛出了错误,说UITableViewCell需要成为最顶层的视图。

于 2014-09-17T13:51:39.510 回答
1

我面对这个,它让我发疯。但这是我的错。我在 Nib 文件中设置了标识符 @"Abc",并且正在使用其他标识符 @"Xyz" 注册同一个 nib 文件。从笔尖上删除了标识符,将该部分留空,它就像一个冠军。:)

于 2015-09-17T19:08:51.463 回答
0

这可能是一种罕见的情况,但由于一些草率的复制面食UITableViewCell,我的表中使用的两个不同的自定义类具有在 Xib 中指定的完全相同的标识符。

在属性检查器中切换其中一个单元格以使用不同的标识符修复了我的断言失败。

于 2015-04-17T20:57:43.917 回答
0

检查您的 .xib 中是否在主布局之外没有 UI 组件:

不接受标签

在此示例中,不接受标签并导致异常

于 2019-04-09T14:24:30.670 回答