gpt4 book ai didi

ios - UICollectionView 单元格删除

转载 作者:行者123 更新时间:2023-12-01 20:03:52 24 4
gpt4 key购买 nike

我正在尝试从我的 UICollectionView 中删除一个单元格。我正在使用自定义布局,并且删除是响应我添加到 Collection View 中的长按手势识别器而发生的。根据我的阅读,我需要先更新数据源,然后删除单元格,这就是我所做的。一切顺利,直到self.collectionView?.deleteItemsAtIndexPaths([indexPath]) .我得到错误:

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

我已经阅读了其他类似的 SO 问题,但似乎无法使其正常工作。

let book = self.booksForCurrentAuthor[indexPath.row]

self.booksForCurrentAuthor.removeAtIndex(indexPath.row)
self.collectionView?.deleteItemsAtIndexPaths([indexPath])

//Delete book from database

编辑

我认为这无关紧要,但在我的自定义布局对象中,我创建了 UICollectionViewLayoutAttributes 的缓存来自 prepareLayout()方法。缓存是一个字典,具有单独的数组,用于标题、单元格、页脚和装饰 View 的属性。

最佳答案

我认为您的自定义布局管理器实际上很可能是问题所在。

当您从 collectionView 中删除单元格时,您需要使现有布局无效,否则布局管理器只会在缓存中为您提供最初计算的相同属性数组 - 包括您已删除的单元格的布局,因此错误。

从数据源中删除相关条目后,调用 cache.removeAll(),然后再次调用 prepareLayout() 以刷新布局缓存。之后,调用 collectionView.reloadData() (也许还有 layoutSubviews() 和 setNeedsDisplay),这应该可以解决您的问题。请注意,您实际上不需要删除单元格,因为 collectionView 会自动从出列的单元格堆栈中加载所需的内容。

让我知道你是怎么办的。最好的。

关于ios - UICollectionView 单元格删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39399954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com