由于UICollectionView
刷新數(shù)據(jù)一定是在主線程中完成的靖避,也就是在主線程Runloop的某個(gè)周期內(nèi)完成的甸私,而主線程只有一個(gè)串行事件隊(duì)列(DispatchQueue.main)帆赢,因此可以想到將后續(xù)的任務(wù)添加到main queue中套硼,從而串行的執(zhí)行reloadData
-> ... -> 某個(gè)任務(wù)卡儒。至此就可以達(dá)到監(jiān)聽reloadData的完成狀態(tài)耐版。形式可以如下幾種方法:
1寺庄、方法一
collectionView.reloadData()
DispatchQueue.main.async {
// TODO: 某個(gè)任務(wù)
}
2艾蓝、方法二
collectionView.reloadData()
collectionView.performBatchUpdates(nil) { (_) in
// TODO: 某個(gè)任務(wù)
}
ps: UITableView
的處理方式類似力崇,不過方法二的處理只能iOS 11.0后才能使用。