我想使用SDWebImage稳定地加载tableview图像,但它不起作用,它会在加载正确的图像之前继续启动重用单元的上一个图像。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCell", for: indexPath) as! CustomTableViewCell
let myStorage = Storage.storage().reference()
let tempImage = myStorage.child("CompanyImage/\(companyList[indexPath.row].photoNameInStorage).jpg")
tempImage.downloadURL { (url, error) in
if error != nil {
// Handle any errors
self.createAlert(title: "error", message: "")
} else {
cell.companyImage.sd_setImage(with: url!, placeholderImage: nil, options: [.cacheMemoryOnly, .highPriority])
}
}
cell.companyName.text = self.companyList[indexPath.row].name
cell.address.text = self.companyList[indexPath.row].address
cell.startDate.text = self.companyList[indexPath.row].startDate
cell.endDate.text = self.companyList[indexPath.row].endDate
cell.conditions.text = self.companyList[indexPath.row].conditions
return cell
}
答案 0 :(得分:0)
请使用此方法在单元格中设置图片:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
<#code#>
}
并确保您使用正确的Cell:
if (cell.tag == indexPath.row) {
/* set your image */
} else {
/* set a default image like a white or transparent one */
}
答案 1 :(得分:0)
您只需要在加载新图片之前删除旧图片,将其放在代码上方的下方:
tempImage.image = nil