gpt4 book ai didi

ios - tableview 中的图像加载另一个几秒钟

转载 作者:搜寻专家 更新时间:2023-11-01 06:27:20 29 4
gpt4 key购买 nike

我在 tableview 中有一张从 Json 下载的图片,一切正常,但在看到相应图片之前滚动时,它会加载另一张图片几秒钟(这些图片是那些已经在表格中可见的图片)。

我的数据结构是:

struct Data: Decodable {
let name: String
let img: String
let phone: String
let linktaller: String
let web: String
}

我的加载图像的单元格的代码是:

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



guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? AseguradorasTableViewCell else { return UITableViewCell() }



cell.titleLbl.text = company[indexPath.row].name
.
.
.

// load image
if let imageURL = URL(string: company[indexPath.row].img) {
DispatchQueue.global().async {
let data = try? Data(contentsOf: imageURL)
if let data = data {
let image = UIImage(data: data)
DispatchQueue.main.async {
cell.myImage.image = image


}
}
}

}

return cell

}

加载数据的函数是:

    func downloadJSON() {

let url = URL(string: "http://myserver.com/data.json")

URLSession.shared.dataTask(with: url!) { (data, response, error) in

if error == nil {
do {
self.company = try JSONDecoder().decode([Data].self, from: data!)

print(self.company)
DispatchQueue.main.async {
self.tableView.reloadData()
self.refreshControl.endRefreshing()
}

} catch let jsonError{
print("error + \(jsonError)")
}
}
}.resume()

}

更多细节见图片:

image screen

欢迎提出解决此问题的任何建议。

最佳答案

enter image description here

在 UITableView dequeueReusableCell 中 - 每个 UITableViewCell 将被多次重复使用,并带有不同的数据(图像)。在您的情况下,每个 cellForRowAt 都会被调用,图像将从服务器加载,因此会有延迟。解决方案:当图片加载完成时,您必须在本地应用程序中缓存带有 url 的图片。
(1)- 使用 SDWebImage - 支持缓存
(2)- 您可以将图像保存在数组中 -> 在 cellForRowAt 中如果存在则从该数组加载,如果不存在则从服务器加载

(图片来自网络)

关于ios - tableview 中的图像加载另一个几秒钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52415911/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com