错误:UICollectionView接收到具有Swift中不存在的索引路径的单元格的布局属性

Enk*_*kha 6 ios uicollectionview swift

我" https://www.raywenderlich.com/392-uicollectionview-custom-layout-tutorial-pinterest "创建自定义UICollectionView.(调整细胞高度)

如果我向上滚动,将继续添加单元格,并从上到下滚动以刷新.

运行应用程序并最初生成单元格时没有问题.但是,刷新或重新排序单元格数时始终存在错误.

错误:

***断言失败 - [UICollectionViewData validateLayoutInRect:],/ BuildRoot/Library/Cache/com.apple.xbs/Source/UIKitCore/UIKit-3698.93.8/UICollectionViewData.m:447

***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'UICollectionView接收到具有不存在的索引路径的单元格的布局属性:

因此," iOS 10错误:UICollectionView接收到不存在索引路径的单元格的布局属性 "并尝试解决错误.

在下面的行

self.artCollectionView.reloadData () 
Run Code Online (Sandbox Code Playgroud)

我尝试添加

self.artCollectionView.collectionViewLayout.invalidateLayout () 
Run Code Online (Sandbox Code Playgroud)

但它没有得到解决.

另外,我不知道在哪里跑

cache.removeAll ()
Run Code Online (Sandbox Code Playgroud)

在prepare()部分.(PinterestLayout.swift中有一个prepare()函数)

解决错误的正确方法是什么?

Sat*_*esh 7

之所以有prepare功能,PinterestLayout.swift是因为它是用于自定义的唯一布局collectionView

在第76行的PinterestLayout.swift文件中。

尝试

override public func prepare() {
    cache.removeAll()
    if cache.isEmpty {
       .....
    }
}
Run Code Online (Sandbox Code Playgroud)