[英]Unable to reload collection view on successful image download
我正在编辑一条包含一些文本信息和图像的记录。 当我获得图像URL时,我正在使用SDWebImage下载图像,这些图像随后显示在collectionView
并且它是垂直可滚动的。 因此,在加载视图时,我正在viewDidLoad
执行此操作:
for (index, _) in mediaFiles.enumerated()
{
let img = UIImageView()
if let url = NSURL(string: "\(baseURLGeneral)\(mediaFiles[index].imageFile ?? "")")
{
print(url)
img.sd_setShowActivityIndicatorView(true)
img.sd_setIndicatorStyle(.gray)
img.sd_setImage(with: url as URL, placeholderImage: nil, options: .refreshCached, completed: { (loadedImage, error, cache, url) in
self.imagesArray.append(loadedImage!)
DispatchQueue.main.async
{
self.photoCollection.reloadData()
}
})
}
}
根据我的理解,这段代码是从Web下载图像,并且在加载图像时,将图像添加到我已声明为var imagesArray: [UIImage] = []
的imageArray
中var imagesArray: [UIImage] = []
,然后重新加载集合视图。
由于这是编辑屏幕,因此用户还可以在imagesArray
添加更多图像,这些图像将与下载的图像一起显示在同一阵列中,并且还可以删除图像。
根据collectionView
委托和dataSource而言,所以我要在numberOfItemsInSection
返回return imagesArray.count
。
在cellForItemAt
,设置单元格变量后,我具有cell.imageAddedByUser.image = imagesArray[indexPath.row]
。
其中我遇到的问题是,在下载图片后viewDidLoad()
collectionView
是没有得到刷新。 但是,如果我pop
然后push
视图控制器,它将显示图像。
尝试在主队列中分派
DispatchQueue.main.async
{
self.photoCollection.reloadData()
}
viewDidAppear()
调用它 DispatchQueue.main.async { self.photoCollection.reloadData() }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.