Rav*_*avi 0 uicollectionviewcell uicollectionviewlayout swift
这是参考链接:
https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest
我已UICollectionView在最后一个单元中实现了更多加载,数据正在下载,下载完成后我想重新加载集合
collectionView.collectionViewLayout.invalidateLayout()
self.collectionView.reloadData()
let concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(concurrentQueue) {
DataManager.sharedInstance.homeRequest(Dictionary: params, onSuccess: { (dict) in
self.downloadPageIndex += 1
let response = HomeObject(dictionary: dict)
for (_,e) in (response.dataDict?.enumerate())!{
self.dataArray.append(e)
}
dispatch_async(dispatch_get_main_queue()) {
self.collectionView.reloadData()
self.collectionView.collectionViewLayout.invalidateLayout()
}
self.activityIndicatorCell.stopAnimating()
}, onError: { (error) in
self.activityIndicatorCell.stopAnimating()
})
Run Code Online (Sandbox Code Playgroud)
像这个collectionview reloadata
谁能帮我吗?
经过一番挖掘,我想出了问题,并且遇到了您当前遇到的问题!
问题在PintrestLayout文件内
在里面,您会发现类似(PROBLEM)的代码:
guard cache.isEmpty == true, let collectionView = collectionView else {
return
}
基本上,如果要应用于CollectionView的属性为空(它们在开始时),则将PintrestLayout应用于它,那就太完美了!但是如果您要重新加载数据并将其添加到collectionView,则需要再次应用布局,但是当您尝试将布局再次应用于collectionView时,缓存不会为空,因此它会返回并且根本不起作用。 。
解决方案:
将该代码替换为:
guard cache.isEmpty == true || cache.isEmpty == false, let collectionView = collectionView else {
return
}
Run Code Online (Sandbox Code Playgroud)
现在您说的是“我不在乎它是否为空,只需将该死的布局应用于我的collectionView”
并做了!现在reloadData()将更新您有多少个单元格...
但是,如果您想使其速度更快并修剪一些内存等,这将是非常昂贵的。然后查看invalidateFlowLayout文档。
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |