UICollectionViewController会暂时向我显示错误的图像,然后刷新到正确的图像

KD.*_*KD. 3 ios uicollectionview uicollectionviewcell swift

我正在从JSON响应创建一个集合视图.Json响应具有高分辨率图像和大约2000年的图像数量.由于数据来自第三方,我无法控制图像大小.

执行:

JSON示例:

{
    "imagelist": [
        {
            "largeImage": "https://amazingphotos/01.jpg"
        },
        {
            "largeImage": "https://amazingphotos/02.jpg"
        },
}
Run Code Online (Sandbox Code Playgroud)

在UICollectionViewController中访问JSON:

Alamofire.request(.GET, dataURL)
            .responseJSON { _, _, result in
                if var json:JSON = JSON(result.value!){
                self.imageURLs = json["imagelist"].arrayValue
                self.collectionView?.reloadData()
                }
        }
Run Code Online (Sandbox Code Playgroud)

在cellForItemAtIndexPath中,我将URL传递给单元格而不是图像本身.

let cell = collectionView.dequeueReusableCellWithReuseIdentifier("imageCell", forIndexPath: indexPath) as! CollectionViewCell
        cell.imageData = imageURLs[indexPath.row]
Run Code Online (Sandbox Code Playgroud)

在自定义Cell我只是这样做:

var imageData:SwiftyJSON.JSON?{
        didSet{
            self.setup() 
        }
    }

    func setup(){
        if let imageURLString = self.imageData?["largeImage"]{
            let imageURL = NSURL(string: imageURLString.stringValue)
            self.imageThumbnail.hnk_setImageFromURL(imageURL!)
        }
Run Code Online (Sandbox Code Playgroud)

问题:当我加载集合视图时,它会正确显示图像,一旦我开始滚动它就会在新单元格中显示我之前的图像几秒钟,然后刷新.

我多次使用集合视图但从未使用过如此多的数据.请指教.TIA

Chr*_*isH 7

滚动收藏视图时所看到的是一个重复使用的单元格,其中包含上一次使用的图像.UICollectionViewCell有一个prepareForReuse功能,您可以使用该功能将任何子视图设置回默认状态.

override func prepareForReuse() {

    myImageView.image = nil

    super.prepareForReuse()
}
Run Code Online (Sandbox Code Playgroud)

  • 老兄,你是个传奇 (3认同)