我在模拟器中运行应用程序时遇到此运行时错误。
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'could not dequeue a view of kind: UICollectionElementKindCell with identifier PlayingCard - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
它崩溃的线是
UICollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"PlayingCard"
forIndexPath:indexPath];
方法
-(UICollectionViewCell*) collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath{}
据我所知,错误意味着标识符" PlayingCard"没有按'与CollectionView中的CollectionViewCells的任何标识符匹配,但我确保故事板中的标识符是相同的。
感谢您的帮助
答案 0 :(得分:7)
您的错误会详细说明您的问题
must register a nib or a class for the identifier or connect a prototype cell in a storyboard
如果仅通过代码创建UICollectionViewCell类,请在viewDidLoad中使用register类进行collectionView
[self.collectionView registerClass:[YourCell class] forCellWithReuseIdentifier:@"PlayingCard"];
如果您通过Xib创建UICollectionViewCell,请使用registerNib
我想你忘记在故事板中为你的Cell指定类名
答案 1 :(得分:4)
以下是如何使用uicollectionview的标识符实现单元格的示例代码。我希望这会有所帮助
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"YourIdentifier" forIndexPath:indexPath];
cell.backgroundColor = [UIColor whiteColor];
return cell;
}
此外,在ray'网站上有一个关于uicollectionview视图的精彩教程,可以帮助您更好地理解整个概念。这是链接Tutorial
如果这有助于您,或者您的朋友需要更多帮助,请告诉我。
编辑:
项目崩溃的问题确实存在于故事板部分。你做的一切都正确,但你的细胞从未连接过。这是一个简单的解决方案。我把项目寄回给你,并在那里留下了一些评论。如果您需要更多帮助,请与我们联系。
答案 2 :(得分:1)
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell" ];
在您的init或视图中如上所述加载并确保故事板中的单元格具有相同的名称。
你的故事板中生成的xml看起来应该是这样的(除了collectionViewCell而不是tableViewCell)
<tableViewController id="qqN-Qz-7Na" customClass="ColorPickerSavedColorTableViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="jm9-vU-9fK" userLabel="TableView">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" id="8ty-Ap-v04">
<rect key="frame" x="0.0" y="22" width="320" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8ty-Ap-v04" id="Omv-J2-1dd">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
</tableView>
<navigationItem key="navigationItem" id="6MG-Do-Mu4"/>
</tableViewController>
查看tableViewCell部分