0

我有收藏视图并有 7 个单元格。当应用程序运行时,它显示 6 并且必须滚动才能查看第 7 个单元格。每个单元格都有一个图像,但第 7 个单元格图像直到我滚动并查看第 7 个单元格时才显示。如果我搜索第 7 个单元格,则不会出现来自第 7 个单元格的图像,而是使用第 6 个单元格图像,片刻之后它会显示原始图像。看起来它仍在加载,但如何在不使用第 6 个单元格图像的搜索后制作第 7 个图像。

我使用领域来存储图像 url 和 haneke 来显示图像

private var database = [Magazine]()

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let magazineObject = database[indexPath.item]
    let imageUrl:NSURL = NSURL(string: magazineObject.image)!
     cell.displayImage.hnk_setImageFromURL(imageUrl, placeholder: nil, success: { (image) -> Void in
        cell.displayImage.image = image
        cell.activityIndicator.hidden = true
        cell.activityIndicator.stopAnimating()
        }, failure: { (error) -> Void in

    })
return cell
}

我的杂志课看起来像这样

import Foundation
import RealmSwift

class Magazine: Object { 
    dynamic var id = 0
    dynamic var pathDatabase = ""
    dynamic var image = ""
    dynamic var urlMagazine = ""
    dynamic var title = ""
    dynamic var progressBarDownload = 0
    dynamic var progressBarTitle = ""
    dynamic var statusDownload = 0
}
4

1 回答 1

3

对于新的可见单元格,collectionview 重用创建但不显示的单元格对象。所以在你的 cellforitem 方法中,你应该初始化所有的 uielements。

在您的代码中添加以下内容

单元格.displayImage.image = nil; //或分配占位符图像,如果你在这里。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let magazineObject = database[indexPath.item]

    cell.displayImage.image = nil; //or assign placeholder image if you have here.

    let imageUrl:NSURL = NSURL(string: magazineObject.image)!
    cell.displayImage.hnk_setImageFromURL(imageUrl, placeholder: nil, success: { (image) -> Void in
        cell.displayImage.image = image
        cell.activityIndicator.hidden = true
        cell.activityIndicator.stopAnimating()
    }, failure: { (error) -> Void in

    })
    return cell
}
于 2016-10-19T13:34:17.380 回答