swift tableview使用SDWebImage 4.3.0加载图像

时间:2018-02-25 12:11:36

标签: swift tableview cell reusability sdwebimage

我想使用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
    }

2 个答案:

答案 0 :(得分:0)

  1. 请使用此方法在单元格中设置图片:

    override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { <#code#> }

  2. 并确保您使用正确的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