Swift 在UITableView重新加载时从SDWebImage设置图像

Swift 在UITableView重新加载时从SDWebImage设置图像,swift,uitableview,sdwebimage,reloaddata,Swift,Uitableview,Sdwebimage,Reloaddata,我在UITableView中有一个单元格列表。图像在单元格内通过以下方法下载 self.profileImage.sd_setImage(with: URL(string: profileURL), completed: { (image, error, cache, url) in if image != nil { self.profileImage.image = ima

我在UITableView中有一个单元格列表。图像在单元格内通过以下方法下载

self.profileImage.sd_setImage(with: URL(string: profileURL), completed: { (image, error, cache, url) in
                            if image != nil {
                                self.profileImage.image = image
                            } else {
                                print("didn't load image")
                            }
                        })
但是,在重新加载并重新调用UITableView时,该索引的前一个图像会加载一小会儿,然后该索引的更新图像会出现

现在我的理论是以下情况发生(如果我错了,请纠正我)

  • 一旦检索到URL,就会下载图像
  • 该图像与SDWebImage一起缓存
  • TableView会重新加载,单元格中的数据也会更改
  • SDWebImage使用该indexPath的缓存映像而不是单元格。(这里有问题)
  • SDWebImage再次下载该单元格的URL并刷新图像 如果这是正确的,我需要做的是以下

  • 检索到URL后立即下载图像
  • 使用SDWebImage缓存图像
  • TableView会重新加载,单元格中的数据也会更改
  • 使用该单元格的缓存图像
  • 我是否使用了错误的方法设置self.profileImage

    一如既往,我们非常感谢您的帮助。

    1.一旦检索到URL,请立即下载图像。 2.使用SDWebImage缓存图像

    你使用这个代码

    let url = NSURL(string: "https://test.com/upload/image.jpg")!
    
    self.imageD.sd_setImage(with: url as URL!, placeholderImage: UIImage(named: "default_logo"), options: .transformAnimatedImage, progress: nil, completed: nil)
    
    默认\u徽标放入资产.xcsets中

    3.TableView重新加载,单元格中的数据更改


    如果使用UITableViewCell配置单元格,则可以重写方法prepareForReuse()以清除旧图像,例如:

    override func prepareForReuse() {
        super.prepareForReuse()
        profileImage.image = nil
    }
    

    这样就不会出现旧的缓存图像。

    这将删除下载的图像,并用占位符图像替换它们。但是,当重新加载UITableView时,这将非常有效。你知道我如何让他们在viewDidLoad时显示吗?别担心,完成块中的self.profileImage.image=image现在似乎可以工作了。
    override func prepareForReuse() {
        super.prepareForReuse()
        profileImage.image = nil
    }