我在 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/