ios uitableview - 滚动时,单元格在更新正确数据之前显示错误数据

标签 ios iphone uitableview swift

我在 UITableView 单元格中显示来自服务器的数据时遇到了一个小问题。 我有一个显示“提要”屏幕的添加,类似于 Instagram 上的主屏幕。 提要的 UITableView 中的每个单元格都从服务器(来自 parse.com)加载图像和一些文本

这是我的 cellForRowAtIndexPath 实现:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier(HomeCell.reuseIdentifier(), forIndexPath: indexPath) as HomeCell

    // Configure the cell...
    let obj = tableArray[indexPath.section]
    cell.configureWithObject(obj)

    return cell
}

tableArray 是一个 PFObject 数组

在 HomeCell 类中,configureWithObject 方法使用 SDWebImage 为该单元格加载远程图像并设置所需的文本标签

func configureWithObject(object : PFObject) {

    AppManager.sharedInstance().getTrackDetailsFromPost(object, block: { (error, obj) -> Void in
        if error != nil
        {
            return
        }

        var artworkURL = ""
        if let artworkString = obj?[Column.TracksArtwork.rawValue] as? String {
            artworkURL = artworkString
        }


        self.albumArtwork.sd_setImageWithPreviousCachedImageWithURL(NSURL(string: artworkURL))

        var trackTitle = ""

        if let title = obj?[Column.TracksTitle.rawValue] as? String {
            trackTitle = title
        }

        var trackArtist = ""
        if let artist = obj?[Column.TracksArtist.rawValue] as? String {
            trackArtist = artist
        }

        var trackAlbum = ""
        if let album = obj?[Column.TracksAlbum.rawValue] as? String {
            trackAlbum = album
        }

        self.songNameLabel.text = trackTitle
        self.songDetailsLabel.text = "\(trackArtist) - \(trackAlbum)"

    })
}

问题: 当我滚动浏览表格 View 时,我在一瞬间看到某些单元格上的错误图像和数据,然后单元格刷新并显示正确的图像和数据。

我怎样才能使滚动体验流畅,而不是让单元格不断重新加载和刷新数据?

谢谢,吉尔。

最佳答案

在您的 HomeCell 类中,覆盖 prepareForReuse 方法,并清除您的 imageView:

override func prepareForReuse() {
    super.prepareForReuse()

    self.imageView.image = nil // or set a placeholder image
}

例如。

关于ios uitableview - 滚动时,单元格在更新正确数据之前显示错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014943/

相关文章:

ios - iOS 7+ 中的远程通知是否要求您的应用程序是报亭应用程序?

iOS UITableView 动态宽度

ios - Swift:如何将 wilDisplayCell 分配给特定的自定义寄存器单元?

ios - 如何以编程方式向 UITableViewCell 添加竖线

ios - 如何在不使用 [view setNeedsDisplay] 的情况下使用 NSNotification 刷新 View ;

iphone - 试图将 long long 从 String 保存到 NSNumber

ios - 如何将印度数字转换为阿拉伯数字?

iOS swift : animating CollectionViewCell elements from a button on the CollectionView

iphone - MKAnnotationView 不可拖动,尽管我认为它已正确实现?

iphone - 如何使用 iPhone SDK 3.0 中的 UISearchDisplayController 实现始终位于顶部的搜索栏