【发布时间】:2020-01-14 08:48:29
【问题描述】:
如果我尝试返回默认的UICollectionViewCell,应用程序会崩溃,因为它缺少reuseIdentifier:
由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'从返回的单元格 -collectionView:cellForItemAtIndexPath: 没有重用标识符 - 必须通过调用来检索单元格 -dequeueReusableCellWithReuseIdentifier:forIndexPath:'
代码:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
return UICollectionViewCell()
}
使用UITableViewCells 可以正常工作。 UICollectionViews 中默认返回的最佳做法是什么?
【问题讨论】:
-
没有
dequeueReusableCell(withType: for:)这样的东西。无论您为表格视图单元格使用什么扩展名,都需要为您的集合视图单元格使用类似的扩展名。 -
这是自定义的,在这种情况下不需要。它只是关于 UICollectionViewCell() 的返回。让细胞..不会被调用。它只是一个显示问题的片段
-
为什么
model会是nil?如果model是nil,您的numberOfItems应该返回0。您可能应该在那个guard中调用fatalError或强制打开model -
即使tableviews支持它,我也不会这样做。如果您被要求输入没有数据的单元格,这表明您的逻辑有问题。但是异常信息很清楚。
-
是的,这是一个糟糕的代码,因为您应该始终有一个特定的单元格要返回,但是您可以只注册
UICollectionViewCell以获得重用标识符,例如Default,然后将Default的实例出列