dequeueReusableCellWithReuseIdentifier崩溃'无法将类视图出列“UICollectionElementKindCell”

时间:2012-10-21 22:12:17

标签: xcode collections deque

我遇到了以下崩溃:

  

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

我的ViewDidLoad中有以下内容:

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

崩溃的行在cellForItemAtIndexPath回调中:

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

我一直在寻找几个小时但找不到任何解决方案。我已经尝试了继承UICollectionViewCell,但得到了同样的错误。

使用断点我已经确定在执行dequeueReusableCellWithReuseIdentifier回调之前正在执行registerClass行。

4 个答案:

答案 0 :(得分: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];

答案 1 :(得分:4)

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

我正在使用补充(页眉/页脚)类型正确地 dequeing ,但我不小心注册它作为单元格类型。咄。

答案 2 :(得分:1)

如果您碰巧遇到这种情况,请在UICollectionViewControllerUITableViewController中,按照抢先说的话做,并确保您的Collection ViewTable View处于关联状态你的故事板。

另一个常见的错误是在故事板中忘了给出正确的CollectionIDCellID

答案 3 :(得分:0)

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

static NSString *identifier = @"cell "; 

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

参考:

could not dequeue a view of kind: UICollectionElementKindCell with identifier