代码之家  ›  专栏  ›  技术社区  ›  David Henry

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

  •  0
  • David Henry  · 技术社区  · 7 年前

    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时,该索引的前一个图像会加载一小会儿,然后该索引的更新图像就会出现。

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

    1. 一旦检索到URL,就会下载图像。
    2. SDWebImage再次下载该单元格的URL并刷新图像。

    如果这是正确的,我需要做以下。。。

    1. 检索到URL后立即下载图像。
    2. 使用SDWebImage缓存图像。

    我是否使用了错误的方法来设定自我。profileImage?

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Majed Dkahellalah    7 年前

    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)
    

    放在里面

    3.TableView重新加载,单元格中的数据发生变化。

    self.tableView.reloadData()
    
        2
  •  0
  •   AlexSmet    7 年前

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

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