Я столкнулся со следующей проблемой, ну, у меня есть пользовательский вид коллекции, где я загружаю изображение с URL-адреса, полученного от службы, в данный момент все работает нормально, но иногда при прокрутке или когда я покидаю экран и возвращение, мой вид коллекции настроен, он изменен, он не загружается правильно, я видел несколько постов, где они представляют одну и ту же проблему в разных случаях, но пытаюсь сделать вывод, что моя проблема в момент использования SDWebImage библиотека. Я видел, что они используют методы, такие как prepareForReuse, устанавливающие изображение в ноль, но моя проблема все еще сохраняется.
Итак, вы видите в первый раз
и тогда это выглядит так во второй раз
Вот этот мой код
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
}
Как я уже говорил, я думаю, что моя проблема связана с образом с либретами, поскольку я комментирую эту строку кода cell.mImgProduct.sd_setImage(with: URL(string: mDataListProducts[indexPath.row].photo!), placeholderImage: UIImage(named: "placeholder.png"))
Все в порядке, я хотел бы узнать лучший способ сделать это или, возможно, исправить то, что со мной происходит.
У меня также есть это в подготовке к использованию моей пользовательской ячейки просмотра, но все еще ничего.
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
}
}