【发布时间】:2016-09-08 20:47:40
【问题描述】:
我正在尝试从我的 UICollectionView 中删除一个单元格。我正在使用自定义布局,并且删除是响应我添加到集合视图中的长按手势识别器而发生的。根据我的阅读,我需要先更新数据源,然后删除单元格,这就是我所做的。一切顺利,直到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
编辑
我认为这无关紧要,但在我的自定义布局对象中,我从 prepareLayout() 方法中创建了 UICollectionViewLayoutAttributes 的缓存。缓存是一个字典,为 Headers、Cells、Footer 和 Decoration 视图的属性提供单独的数组。
【问题讨论】:
-
只是一个建议:在使用 UICollectionView 时使用
indexPath.item。 -
做出改变 - 使用有点标准的集合视图布局时是否存在功能差异?
-
无。两者都是路径中第二个索引的便捷访问器。
标签: ios uicollectionview