CollectionView Cell图像正在发生变化

时间:2017-11-20 18:41:38

标签: swift uicollectionview

cellForItemAt indexPath我致电:

if cell.venueImageView.image == nil {
    cell.loadImage(imageURL: venue.imageURL)
}

loadImage函数位于UICollectionViewCell类:

func loadImage(imageURL: String) {
    print("LOAD IMAGE: \(imageURL)")
    Alamofire.request("http://***/" + imageURL).responseImage { response in
        if let image = response.result.value {
            self.venueImageView.image = image
        }
    }
}

第一次显示正确的图像,但是当我向下滚动然后向上滚动时,第一个图像出现在第二个单元格中,第二个图像出现在第一个单元格中,依此类推。我的代码有什么问题?

1 个答案:

答案 0 :(得分:2)

在UICollectionViewCell中实现此方法:

override func prepareForReuse() {
    super.prepareForReuse()

    venueImageView.image = nil
}

每次在重复使用单元格之前都会调用它。 您还应该尝试存储下载的图像。否则,每次滚动时都必须加载图像。

澄清:当屏幕滚动时,您的单元格会被重用,以避免内存泄漏。这意味着您下载的图像也会被删除。下次滚动到单元格时,图像消失,必须再次下载。

如果我是你,我会将所有下载的图像存储在ViewController中的数组中,并使用cellForItemAt indexPathcell.venueImageView.image = imageArray[indexPath.row]中设置图像。