swift UITableView不更新使用Kingfisher下载的图像

bksxznpy  于 2023-09-29  发布在  Swift
关注(0)|答案(2)|浏览(132)

我使用翠鸟下载和设置图像imageviews在细胞中的imagableView。一切正常,在下载新图像之前,tableview首先显示占位符图像。但是,只有在滚动表视图后,这些占位符图像才会更新为正确的图像。如何在下载图像后立即更新单元格?谢谢

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = articlesTableView.dequeueReusableCell(withIdentifier: "articleCell", for: indexPath) as! ArticleCell

    let resource = self.articlesArray?[indexPath.item].downloadedImageResource
        //resources are being downloaded using Kingfisher when populating the articlesArray and added to this array

    cell.picView.kf.setImage(with: resource, placeholder: #imageLiteral(resourceName: "LS_logo_male")){ (image, error, cacheType, imageUrl) in
        cell.setNeedsLayout()
    }

    return cell
}
plicqrtu

plicqrtu1#

你可以从表格视图中得到可见的单元格,在那里你可以得到每个单元格的图像视图。你可以试着用翠鸟来更新图像。这里您没有刷新单元格。查找单元格并更新内容。这样它看起来就不会像 Flink 。

am46iovg

am46iovg2#

请在'ArticleCell.swift'中对每个单元格进行UI更改,因此在我的情况下,我使用了'Nuke'库,到目前为止,它在下载和真实的显示图像时给了我最好的用户体验。请参考下面给出的代码以获得帮助:
在main class中这样做:

cell.cellImageURL = self.articlesArray?[indexPath.item]

在'ArticleCell.swift'类中这样做:

var cellImageURL: String {
  didSet {
     if let request: NSURLRequest = NSURLRequest(URL: cellImageURL) {
     Nuke.loadImage(with: request, options: options, into: picView, progress: nil) { _ in }
     } else {
       picView.image = UIImage(named: "placeholder")
  }
}

相关问题