繁体   English   中英

成功下载图像后无法重新加载集合视图

[英]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] = []imageArrayvar 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()
 }
  1. 尝试在viewDidAppear()调用它

DispatchQueue.main.async { self.photoCollection.reloadData() }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM