正確監(jiān)聽UICollectionView的reloadData完成狀態(tài)

由于UICollectionView刷新數(shù)據(jù)一定是在主線程中完成的,也就是在主線程Runloop的某個周期內(nèi)完成的,而主線程只有一個串行事件隊列(DispatchQueue.main),因此可以想到將后續(xù)的任務(wù)添加到main queue中,從而串行的執(zhí)行reloadData -> ... -> 某個任務(wù)。至此就可以達(dá)到監(jiān)聽reloadData的完成狀態(tài)。形式可以如下幾種方法:

1、方法一

collectionView.reloadData()
DispatchQueue.main.async {
     // TODO: 某個任務(wù)
}

2、方法二

collectionView.reloadData()
collectionView.performBatchUpdates(nil) { (_) in
     // TODO: 某個任務(wù)
}

ps: UITableView的處理方式類似,不過方法二的處理只能iOS 11.0后才能使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容