首页 > 解决方案 > 错误:UICollectionView 接收到具有 Swift 中不存在的索引路径的单元格的布局属性

问题描述

我“ https://www.raywenderlich.com/392-uicollectionview-custom-layout-tutorial-pinterest ”来创建自定义 UICollectionView。(调整单元格高度)

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

当您运行您的应用程序并最初培养 Cells 时,没有问题。但是,刷新或重新排序单元格数量时总是会出错。

错误 :

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

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

因此,“ iOS 10 bug: UICollectionView received layout attributes for a cell with a index path that does not exist ” 并试图解决该错误。

在下面的行

self.artCollectionView.reloadData () 

我尝试添加

self.artCollectionView.collectionViewLayout.invalidateLayout () 

但没有解决。

另外,我不知道在哪里运行

cache.removeAll ()

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

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

标签: iosswiftuicollectionview

解决方案


应该有prepare功能,PinterestLayout.swift因为它是唯一用于自定义collectionView.

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

尝试

override public func prepare() {
    cache.removeAll()
    if cache.isEmpty {
       .....
    }
}

推荐阅读