Как правильно загрузить изображение с SDWebImage в UICollectionView в Swift - PullRequest
0 голосов
/ 13 июня 2019

Я столкнулся со следующей проблемой, ну, у меня есть пользовательский вид коллекции, где я загружаю изображение с URL-адреса, полученного от службы, в данный момент все работает нормально, но иногда при прокрутке или когда я покидаю экран и возвращение, мой вид коллекции настроен, он изменен, он не загружается правильно, я видел несколько постов, где они представляют одну и ту же проблему в разных случаях, но пытаюсь сделать вывод, что моя проблема в момент использования SDWebImage библиотека. Я видел, что они используют методы, такие как prepareForReuse, устанавливающие изображение в ноль, но моя проблема все еще сохраняется.

Итак, вы видите в первый раз

enter image description here

и тогда это выглядит так во второй раз

enter image description here

Вот этот мой код

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
    }
}
...