有一种情况,我将图像、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"))
}
}
最佳答案
我猜您需要在 prepareForReuse
中取消图像下载 - 仅将图像设置为 nil
不会这样做。
考虑以下场景:
- 单元格用作
图像
或视频
单元格,触发图像下载 - 在下载完成之前,单元格将被重新用作
文档
单元格,并且您设置Pdf-icon
图像(之前的下载仍在运行!)< - 下载完成后,它将用下载的图像替换 PDF 图标。
关于ios - UICollectionViewCell 中的图像被另一个 Cell 中的图像替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51998823/