我正在编辑一条包含一些文字信息和图片的记录。当我获取图像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下载图像,当图像加载时,它将图像添加到我已声明为imageArray
的{{1}}中,然后重新加载集合视图。
由于这是编辑屏幕,因此用户还可以在var imagesArray: [UIImage] = []
中添加更多图像,这些图像将与下载的图像一起显示在同一阵列中,并且还可以删除图像。
根据imagesArray
委托和dataSource,所以我在collectionView
返回return imagesArray.count
。
在制作单元格变量后的numberOfItemsInSection
我cellForItemAt
。
问题我在cell.imageAddedByUser.image = imagesArray[indexPath.row]
viewDidLoad()
下载图片后没有刷新。但是,如果我collectionView
然后pop
查看控制器,则会显示图像。
答案 0 :(得分:0)
尝试在主队列中分发
DispatchQueue.main.async
{
self.photoCollection.reloadData()
}
答案 1 :(得分:0)
viewDidAppear()
DispatchQueue.main.async { self.photoCollection.reloadData() }