我試圖異步加載我的FriendsTableView(UITableView)單元格內的圖片。圖像加載正常,但是當我滾動表格時,圖像會改變幾次,錯誤的圖像被分配到錯誤的單元格。異步圖像加載到UITableViewCell後滾動異常圖像時,Swift圖像更改爲錯誤圖像
我已經嘗試了所有可以在StackOverflow中找到的方法,包括將標記添加到原始數據然後檢查它但沒有奏效。我也在驗證應該用indexPath更新的單元格,並檢查單元格是否存在。所以我不知道爲什麼會發生這種情況。
這裏是我的代碼:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("friendCell", forIndexPath: indexPath) as! FriendTableViewCell
var avatar_url: NSURL
let friend = sortedFriends[indexPath.row]
//Style the cell image to be round
cell.friendAvatar.layer.cornerRadius = 36
cell.friendAvatar.layer.masksToBounds = true
//Load friend photo asyncronisly
avatar_url = NSURL(string: String(friend["friend_photo_url"]))!
if avatar_url != "" {
getDataFromUrl(avatar_url) { (data, response, error) in
dispatch_async(dispatch_get_main_queue()) {() -> Void in
guard let data = data where error == nil else { return }
let thisCell = tableView.cellForRowAtIndexPath(indexPath)
if (thisCell) != nil {
let updateCell = thisCell as! FriendTableViewCell
updateCell.friendAvatar.image = UIImage(data: data)
}
}
}
}
cell.friendNameLabel.text = friend["friend_name"].string
cell.friendHealthPoints.text = String(friend["friend_health_points"])
return cell
}
我試過使用AlamofireImage庫,應該已經解決了這個問題,但是我無法讓它工作,它對圖像有相同的效果。您介意解釋我應該使用Kingfisher庫的哪些方法? – BenNov
我已經爲您的案例添加了示例代碼。這應該工作得很好。 –
你怎麼聲明'imageView'? – BenNov