UICollectionViewCell中的图像被另一个单元格中的图像替换

时间:2018-08-24 06:40:49

标签: ios swift uicollectionviewcell

在某些情况下,我将图像,PDF和YouTube URL上传到服务器,完成后,这些项目将显示在UICollectionView中。图像按原样显示,对于PDF则显示图标,对于视频,则为缩略图。如果我先上传图像,然后上传pdf,然后上传YouTube URL,然后在collectionView中将带有pdf图标的单元格替换为图像。我正在使用Kingfisher从网络上下载和缓存图像。

这是我的collectionViewCell代码。

override func prepareForReuse() {
    self.imageView.image  = nil
}

func configure(doc: GenericSubmissionDoc) {
    switch doc.type {
    case .document:
        self.imageView.image = UIImage(named: "Pdf-icon")
    case .image:
        self.imageView.setImageFromUrl(urlString: doc.url)
    case .video:
        self.imageView.contentMode = .scaleAspectFit
        guard let thumbnailLink = doc.videoThumbnailUrl else {
            self.imageView.image = UIImage(named: "youtube")
            return
        }
        self.imageView.setImageFromUrl(urlString: thumbnailLink, placeHolder: UIImage(named: "Node-Placeholder"))
    }
}

1 个答案:

答案 0 :(得分:0)

我想您需要取消prepareForReuse中的图像下载-仅将图像设置为nil即可。

请考虑以下情形:

  • 该单元格用作imagevideo单元格,会触发图像下载
  • 在下载完成之前,该单元格将重新用作document单元格,并设置Pdf-icon映像(之前的下载仍在运行!)
  • 下载完成后,它将用下载的图像替换PDF图标。