iOS 12:UICollectionView接收到具有索引路径不存在的单元格的布局属性

时间:2018-09-18 16:38:22

标签: ios swift

我的代码在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后,它不再崩溃。但是我只想重新加载一个部分,而不是全部。

1 个答案:

答案 0 :(得分:-1)

尝试一下:

collectionView.reloadSections(IndexSet(integer: kFirstSectionIndex))