链接performBatchUpdate
调用UICollectionView
的正确方法是什么,以便一个更新在下一个更新开始之前完成,以防止同时触发多个触发,从而导致IndexPath不同步(由于删除与插入混在一起)
最佳答案
我不太确定您要在这里寻找什么。如果您是想确保在执行performBatchUpdate
时如何确保多个线程不会互相覆盖,则应确保在主线程上均已调用performBatchUpdate
。例如。:
DispatchQueue.main.async {
collectionView.performBatchUpdates({
// perform a bunch of updates.
}, completion: { (finished: Bool) in
// anything that needs to happen after the update is completed.
}
}
另外,如果您正在寻找一种在同一线程中多次调用
performBatchUpdates
的方法(是的,您需要它有点奇怪,但是由于第3方API,我有一个地方需要使用使用),因为performBatchUpdates
已完成,因此您可以尝试将第二个performBatchUpdates
调用放在第一个的完成处理程序中。 self.collectionView.performBatchUpdates({
// perform a bunch of updates.
}, completion: { (finished: Bool) in
self.collectionView.performBatchUpdates({
// perform a bunch of other updates.
}, completion: { (finished: Bool) in
})
})