tableViewCell:滚动时图像更改

时间:2017-09-22 21:34:19

标签: ios swift

您好我下载图片然后在tableViewCell中设置但是当我滚动图片时正在改变并且一段时间后他们正确设置这对用户来说真的不太好这是我在视图控制器中的代码

override func prepareForReuse() {
    super.prepareForReuse()
    self.imageProduct.image = UIImage(named: "sumGray")
}

func cellConfigure(cellProduct : product) {
    productName.text = cellProduct.title
    productFeature.text = cellProduct.info[0].capitalized

    let urlImage = URL(string: cellProduct.pic)!
    DispatchQueue.global().async {
        do {
            let img = try Data(contentsOf: urlImage)
            DispatchQueue.global().sync {
                self.imageProduct.image = UIImage(data: img)
            }
        } catch let err as NSError {
            print(err.debugDescription)
        }
    }
}

这是我在UItableViewCell(ProductVC)中的代码

*args

}

我添加了重用功能,但它只会通过将imageView更改为默认图像而变得更糟 我在stackoverflow中搜索,我找到了一些像重用的方法,但他们没有解决我的问题 我希望看到每个细胞的当前图像 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

  • 在开始下载之前保存URL并在下载过程完成时检查URL是否未更改(由于单元重用)。仅在URL未更改时才使用下载的图像。
  • 在设置下载的图像时,不要从后台线程调用UI代码:

    DispatchQueue.main.async {
       // if the URL didn't change 
       self.imageProduct.image = UIImage(data: img)
    }