正确监听UICollectionView的reloadData完成状态

由于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后才能使用。

你可能感兴趣的:(正确监听UICollectionView的reloadData完成状态)