我的代码在iOS 11上运行良好,但偶尔在iOS 12上崩溃。我得到的错误是:
-[UICollectionViewData validateLayoutInRect:]中的断言失败。 由于未捕获的异常而终止应用程序 “ NSInternalInconsistencyException”,原因:“收到UICollectionView 索引路径不存在的单元格的布局属性: {length = 2,路径= 1-0}
我有一个收集视图,显示了几个部分。当我从服务器获取新数据时,我会重新加载这些部分之一。我用来重新加载该部分的代码是:
let attributes = calculateAttributesFrom(items)
layout.firstSectionAttributes = attributes
collectionView.reloadSections([kFirstSectionIndex])
一个部分中的项目数为:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if indexPath.section == kFirstSectionIndex {
return layout.firstSectionAttributes.count
}
...
}
我使用layout.firstSectionAttributes.count
作为各节中的项目数。这意味着每个属性必须具有一个对应的单元格。我想这与layout.invalidateLayout()
有关。我尝试在重新加载之前和之后添加它,但没有帮助。
有人有什么主意吗?
将reloadSections
替换为reloadData
后,它不再崩溃。但是我只想重新加载一个部分,而不是全部。
答案 0 :(得分:-1)
尝试一下:
collectionView.reloadSections(IndexSet(integer: kFirstSectionIndex))