我遇到了以下崩溃:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使类型的视图出列:具有标识符的UICollectionElementKindCellCell - 必须为标识符注册一个nib或类或在故事板中连接原型单元'
我的ViewDidLoad中有以下内容:
[self.collectionView registerClass:[UICollectionViewCell class]
forCellWithReuseIdentifier:@"Cell"];
崩溃的行在cellForItemAtIndexPath回调中:
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
我一直在寻找几个小时但找不到任何解决方案。我已经尝试了继承UICollectionViewCell,但得到了同样的错误。
使用断点我已经确定在执行dequeueReusableCellWithReuseIdentifier回调之前正在执行registerClass行。
答案 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)
如果您碰巧遇到这种情况,请在UICollectionViewController
或UITableViewController
中,按照抢先说的话做,并确保您的Collection View
或Table View
处于关联状态你的故事板。
另一个常见的错误是在故事板中忘了给出正确的CollectionID
或CellID
。
答案 3 :(得分:0)
当我在处理集合视图单元格时,我写道:
static NSString *identifier = @"cell ";
仔细观察,您会在标识符字符串的末尾看到一个额外的空格。在意识到我的错误后,我希望这会对某人有所帮助。
参考:
could not dequeue a view of kind: UICollectionElementKindCell with identifier