【发布时间】:2017-10-10 01:40:39
【问题描述】:
我在swift中有一张桌子。每当我向上和向下滚动 tableview 时,即使图像已经加载,它也会再次运行 getImageForCell 函数。有没有办法让这种情况不发生。下面是我的代码。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ReviewTableViewCell", for: indexPath) as! ReviewTableViewCell
let review = json[reviewType][indexPath.row]
cell.nameLabel.text = review[userType]["name"].stringValue
cell.reviewLabel.text = review["message"].stringValue
cell.dateLabel.text = review["created_at"].stringValue
cell.ratingStars.rating = Double(review["rating"].intValue)
getImageForCell(url: review[userType]["photo_url"].stringValue, cell: cell)
return cell
}
func getImageForCell(url: String, cell: ReviewTableViewCell) {
Alamofire.request(url).responseImage { response in
if let downloadedImage = response.result.value {
print("downloaded image \(downloadedImage)")
DispatchQueue.main.async {
cell.profileImageView.image = downloadedImage
}
}
}
}
【问题讨论】:
-
"有没有办法避免这种情况发生" 您希望有什么替代方案?
-
他的意思是他不想每次都要下载图片,而是使用缓存的图片来避免网络调用。
-
github.com/rs/SDWebImage 这个库提供了一个支持缓存的异步图片下载器。
标签: swift uitableview alamofire