gpt4 book ai didi

swift - 将图像加载到 TableViewController

转载 作者:行者123 更新时间:2023-11-30 10:34:39 25 4
gpt4 key购买 nike

我正在将图像从 RESTApi 加载到 Netflix(例如 ScrollView)中。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ccell", for: indexPath) as! CollectionCell
cell.imageView.image = nil
cell.labelText.text = self.data[indexPath.row].kategorie
cell.model = self.data[indexPath.row].model!
cell.progressHud.startAnimating()
let url = self.data[indexPath.row].thumbnail_image_name

if let imageFromCache = imageCache.object(forKey: url as AnyObject) as? UIImage{
cell.imageView.image = imageFromCache
}else{
Download.fetchPhoto(id: 1, url: self.data[indexPath.row].thumbnail_image_name) { (image) in
DispatchQueue.main.async {
cell.imageView.image = image
cell.progressHud.stopAnimating()
}
self.imageCache.setObject(image, forKey:url as AnyObject)
}
}
return cell
}

我正在 ImageCache 中缓存图像。到目前为止,一切都很好。问题是,每次我打开 TableviewController 时,下载任务都会重新开始。下载图像后保存图像的最佳做法是什么,即使在呈现的 vc 已关闭之后也是如此。

将它们保存到设备吗?关闭时,将缓存发送回当前的 vc?

也许你有一些想法。

谢谢!

最佳答案

因为您的下载方法是在 cellForRow 中调用的,所以每次新单元出队时都会获取该方法。

我建议在 viewDidLoad() 中进行下载,并将下载的图像保存到您的单元格可以引用的数组中。下载完成后,您可以告诉 Collection View 重新加载其数据。

如果您不想每次看到屏幕时都下载图像,则需要保留下载的图像数据,然后您可以访问该数据,而不是在 viewDidLoad() 中调用下载。

关于swift - 将图像加载到 TableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58342364/

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