由于UICollectionView
刷新数据一定是在主线程中完成的,也就是在主线程Runloop的某个周期内完成的,而主线程只有一个串行事件队列(DispatchQueue.main),因此可以想到将后续的任务添加到main queue中,从而串行的执行reloadData
-> ... -> 某个任务。至此就可以达到监听reloadData的完成状态。形式可以如下几种方法:
1、方法一
collectionView.reloadData()
DispatchQueue.main.async {
// TODO: 某个任务
}
2、方法二
collectionView.reloadData()
collectionView.performBatchUpdates(nil) { (_) in
// TODO: 某个任务
}
ps: UITableView
的处理方式类似,不过方法二的处理只能iOS 11.0后才能使用。