在我的uicollectionview中,我遇到了多个单元格出错的问题。 有人可以从注册到出列一步一步地解释这个过程。我在网上找不到任何关于在一个集合视图中加载两个或更多uicollectionview单元格的内容。同样,这是基于来自coreadata的变量在单个集合视图中加载多种类型的单元格。
这是我到目前为止所拥有的。
这是我注册单元格的地方
collectionView?.register(ShareCell.self, forCellWithReuseIdentifier: cellId)
collectionView?.register(ShareCellMedia.self, forCellWithReuseIdentifier: mediaCellId)
这是索引路径
项目的单元格override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath :
IndexPath) -> UICollectionViewCell {
let friend = fetchedResultsController.object(at: indexPath) as! Friend
if (friend.lastMessage?.hasImage)! == true {
let mediaCell = collectionView.dequeueReusableCell(withReuseIdentifier: mediaCellId, for: indexPath) as!
ShareCellMedia
mediaCell.cell = friend.lastMessage
return mediaCell
}else{
let regularCell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as!
ShareCell
regularCell.cell = friend.lastMessage
return regularCell
}
}
答案 0 :(得分:0)
如果您使用的是原型静态单元格,则无需注册单元格,或者如果您使用的是带有xib的单元格,则可以像这样注册
collectionView.register(UINib(nibName: "name here",bundle:nil), forCellWithReuseIdentifier: "identifier")
并检查或打印您的标识符
答案 1 :(得分:0)
您是否使用xib创建单元格?
如果是这样的话 那么你必须在 viewdidload 中注册nib单元格,如下所示 UINib *cellNib = [UINib nibWithNibName:@"yourCellNib" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"TheNibCellIdentifier"];
此外,您必须确保在加载单元格时使用相应的 ReuseIdentifier :
yourCellNib*cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"TheNibCellIdentifier" forIndexPath:indexPath];