gpt4 book ai didi

swift - 滚动时,表格 View 单元格中的值会发生变化,我在表格 View 中使用了原型(prototype)单元格。我的代码如下

转载 作者:行者123 更新时间:2023-11-30 12:40:39 27 4
gpt4 key购买 nike

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) as! ViewAllCell


stringClassObj = stringClassArray[indexPath.row]

cell.modelNameLbl.text = stringClassObj.model
cell.brandLbl.text = stringClassObj.vehicleTitle
cell.fuelTypeLbl.text = stringClassObj.fuelType
cell.priceLbl.text = stringClassObj.Price
cell.discountLbl.text = "5%"

let URLBaseString = "http://vehiclebuzzzz.com/"

let url = URL(string:URLBaseString .appending(stringClassObj.vehicleImage!))

DispatchQueue.global().async
{
let dataurl = try? Data(contentsOf: url!)
DispatchQueue.main.async
{
cell.productImageView.image = UIImage(data: dataurl!)

}
self.tableViewObj.reloadData()

}

return cell
}

最佳答案

原因是您正在后台队列中加载数据,这需要一段时间,一旦数据可用,您就更新单元格(在主线程中,这是正确的)。但是,当数据已加载时,您将上下滚动 TableView ,因此单元格可能会在顶部消失,并将在底部重用于其他数据。现在后台加载已完成(旧单元格的图像数据已在顶部消失),并且您更新了重复使用的单元格,这应该显示不同的内容。

要做什么:

  • 不要在后台闭包中存储对 UICellView 的引用,而是存储索引路径
  • 在主线程中更新时,检查图像路径是否仍然可见,然后获取属于该路径的单元格并更新它。

Apple 还有一个很好的教程(几年前也在一些 WWDC 上演示过): https://developer.apple.com/library/content/samplecode/LazyTableImages/Introduction/Intro.html

关于swift - 滚动时,表格 View 单元格中的值会发生变化,我在表格 View 中使用了原型(prototype)单元格。我的代码如下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265716/

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