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

我正在尝试使用UICollectionViewperformBatchUpdates方法来执行过滤操作(sorta),并在块中插入单元格,移动单元格和删除单元格。 我得到了一些奇怪的结果,所以我想知道这个行为是否真的被支持(我正在弄清楚这些行为是不是都搞砸了)。 我是否需要将每个“types”的动作(插入,移动和删除)分成独立的块?

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

刚刚find这个答案寻找各种操作的顺序,并认为我会分享我已经发现有关节插入/删除时,加上删除项目插入(不移动)。 我正在过滤一个UICollectionView并在事物变空时删除单元格/部分,并在清除search时重新填充它们。 我基本上是用arrays来支持它的。

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

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

然后插入任何新的部分/如果需要sorting/并跟踪所有插入部分。

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

 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。