【发布时间】:2023-04-04 06:35:01
【问题描述】:
我遇到了以下崩溃:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法将类型视图出列:带有标识符 Cell 的 UICollectionElementKindCell - 必须为标识符注册一个 nib 或一个类,或者在情节提要中连接一个原型单元格”
我的 ViewDidLoad 中有以下内容:
[self.collectionView registerClass:[UICollectionViewCell class]
forCellWithReuseIdentifier:@"Cell"];
而崩溃的那一行在 cellForItemAtIndexPath 回调中:
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
我一直在寻找几个小时,但找不到任何解决方案。我尝试对 UICollectionViewCell 进行子类化,但得到了同样的错误。
通过断点,我确定 registerClass 行在 dequeueReusableCellWithReuseIdentifier 回调执行之前被执行。
【问题讨论】:
-
在
registerClass:forCellWithReuseIdentifier:行放置一个断点。当它被击中时,打印self.collectionView。是零吗?如果是这样,您忘记连接插座(如果使用笔尖)或设置属性(如果使用代码)。如果不是 nil,则在dequeueReusableCellWithReuseIdentifier:forIndexPath:行放置一个断点。当断点被命中时打印collectionView。你得到的指针和你从第一个断点得到的指针一样吗? -
@robmayoff 按照您的步骤,在
dequeueReusableCellWithReuseIdentifier:forIndexPath之前它具有相同的指针。但是当它点击dequeueReusableCellWithReuseIdentifier:forIndexPath时,它会因同样的错误而崩溃。
标签: xcode collections deque