我正面临以下问题,我有一个自定义集合视图,在该视图中我从服务中获得的URL上传图像,目前一切正常,但有时在滚动或退出屏幕时返回,我的自定义集合视图已更改,无法正确加载,我看到了几篇文章,它们在不同情况下都存在相同的问题,但是试图得出的结论是我的问题是在使用 SDWebImage < / strong>库。我已经看到他们使用诸如prepareForReuse之类的方法将图像设置为nil,但我的问题仍然存在。
所以你第一次见到
然后第二次看起来像这样
这是我的代码
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ItemMenuFilterCollectionViewCell", for: indexPath) as! ItemMenuFilterCollectionViewCell
cell.mImgProduct.image = nil
cell.mImgProduct.sd_setImage(with: URL(string: mDataListProducts[indexPath.row].photo!), placeholderImage: UIImage(named: "placeholder.png"))
cell.mTxtProductName.text = mDataListProducts[indexPath.row].shortName
cell.mTxtBrand.text = mDataListProducts[indexPath.row].marca
cell.mTxtStore.text = mDataListProducts[indexPath.row].tienda
cell.mTxtPrice.text = mDataListProducts[indexPath.row].price
cell.mRatingStar.rating = mDataListProducts[indexPath.row].valor?.toDouble() ?? 0
return cell
}
正如我所提到的,我认为我的问题是由libreta负责的,因为我评论了这段代码cell.mImgProduct.sd_setImage(with: URL(string: mDataListProducts[indexPath.row].photo!), placeholderImage: UIImage(named: "placeholder.png"))
一切正常,我想知道一种更好的方法,或者更正正在发生的事情。
在我的customviewcell的prepareforReuse中也有此功能,但仍然没有。
class ItemMenuFilterCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var mRatingStar: CosmosView!
@IBOutlet weak var mImgProduct: UIImageView!
@IBOutlet weak var mTxtProductName: UILabel!
@IBOutlet weak var mTxtBrand: UILabel!
@IBOutlet weak var mTxtStore: UILabel!
@IBOutlet weak var mTxtPrice: UILabel!
override func prepareForReuse() {
self.mImgProduct.sd_cancelCurrentImageLoad()
self.mImgProduct.image = nil
}
}