14

我遇到以下崩溃:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法使类型视图出列:带有标识符 Cell 的 UICollectionElementKindCell - 必须为标识符注册一个 nib 或一个类或连接故事板中的原型单元格”

我的 ViewDidLoad 中有以下内容:

[self.collectionView registerClass:[UICollectionViewCell class] 
        forCellWithReuseIdentifier:@"Cell"];

崩溃的行在 cellForItemAtIndexPath 回调中:

UICollectionViewCell *cell = [collectionView 
    dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

我一直在寻找几个小时,但找不到任何解决方案。我尝试对 UICollectionViewCell 进行子类化,但得到了同样的错误。

通过断点,我确定 registerClass 行在执行 dequeueReusableCellWithReuseIdentifier 回调之前正在执行。

4

4 回答 4

15

我遇到了这个问题,因为我在实例化表视图对象之前调用了 registerClass 。工作代码:

self.tableView = [[UITableView alloc] initWithFrame:self.view.frame];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
[self.view addSubview:self.tableView];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.tableView reloadData];
于 2013-10-26T10:20:15.610 回答
4

另外,不要忘记单元格(注册... forCellWithReuseIdentifier)和补充视图(注册... forSupplementaryViewOfKind)之间的区别。

我用补充(页眉/页脚)类型正确地将它出队,但我不小心将它注册为单元格类型。呃。

于 2014-09-05T16:12:08.700 回答
1

如果您碰巧在UICollectionViewControlleror中遇到这种情况UITableViewController,请按照 rob mayoff 所说的进行操作,并确保您的Collection VieworTable View与您的 Storyboard 中的属性相关联。

另一个常见的错误是在情节提要中您忘记赋予正确的CollectionIDCellID.

于 2014-03-07T01:06:31.873 回答
0

有一次我在处理集合视图单元格时,我写道:

static NSString *identifier = @"cell "; 

仔细看,您会在标识符字符串的末尾看到一个额外的空格。意识到我的错误后,我希望这对某人有所帮助。

参考:

无法出列同类视图:带有标识符的 UICollectionElementKindCell

于 2014-08-26T19:11:56.117 回答