UICollectionView performBatchUpdates同时插入,删除和移动

时间:2012-12-06 19:43:13

标签: objective-c ios uicollectionview

我正在尝试使用UICollectionView的{​​{1}}方法执行过滤操作(sorta),而在块内我插入单元格,移动单元格和删除单元格。我得到了一些奇怪的结果,所以我想知道这种行为是否真的得到了支持(我正在弄清楚这些指标是否已经搞砸了)。我是否只需要将每个“类型”操作(插入,移动和删除)分解为单独的不同块?

2 个答案:

答案 0 :(得分:0)

performBatchUpdates内的所有操作都是针对当前索引执行的。所以不,你不应该将插入/删除/移动分解成不同的块,这正是performBatchUpdates的用途。没有一些代码或对古怪的描述,你会发现它很难帮助......

答案 1 :(得分:0)

刚刚找到这个答案,寻找各种操作的排序,并认为我会分享我发现的关于部分插入/删除与项目插入删除(没有移动)。我正在处理过滤UICollectionView并在事情变空时删除单元格/部分,并在清除搜索时重新填充它们。我基本上是一组数组支持它。

我发现在从数据源中删除要删除的部分之前,我需要使用行和部分索引来计算已删除的项目。 (前段删除)

然后从数据源中删除部分并存储这些索引以进行删除。

然后根据需要插入任何新的部分/排序/并跟踪所有插入的部分。

最后根据新的部分索引计算插入的行。

Deleted Sections: (pre deleted index)
Inserted Sections: (indexes after deleting the deleted sections and adding these back in)
Deleted Rows: (row, pre-deleted section)
Inserted rows: (row, section based on index after inserting new sections)

这是iOS 9。