gpt4 book ai didi

swift - 从单元格到新 View Controller 的图像传输通常会加载错误的图像,有什么方法可以解决这个问题吗?

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

周末愉快。我有关于从单元格到新 View Controller 的图像传输的问题。我对 swift 很陌生,我认为这个问题可以很简单地解决,但实际上我找不到我尝试过的协议(protocol)等,但它不能解决我的问题。我有一些带有一些图像的单元格,每个单元格都有不同的图像,导航 View Controller 应该显示与单元格图像完全相同的图像。在这一点上,我从单元格中获取图像并为该图像指定一个变量名称,然后调用 View Controller 并从 ImageView 中添加与此图像相同的内容,但它工作错误。在这里我的代码你会清楚地理解。对不起我的英语。

这里是来自单元格的代码:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! itemsCell

let dataGelen = itemler[indexPath.row]
cell.titleLabel.text = dataGelen.itemTitleLabel

if let cellDataImage = dataGelen.itemImageName {
let url = URL(string: cellDataImage)
URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print(error!)
return
}
DispatchQueue.main.async {
cell.itemsimageView.image = UIImage(data: data!)
self.imageDeneme = UIImage(data: data!)!


}
}.resume()
}
return cell
}


func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

let homecon = HomeController(collectionViewLayout: UICollectionViewLayout())
homecon.name = datagelen.itemTitleLabel!
homecon.imageDenemeHome = imageDeneme
homecon.showDetailPage()

}

和 View Controller 中的代码:

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)


self.itemDetailImage.image = imageDetail


}

有什么办法可以拍摄这张照片吗?我没有使用 Storyboard。我只使用代码。谢谢..

最佳答案

imageDeneme 包含在最近一次调用 cellForItemAt 中分配的图像。您需要将图像添加到缓存图像的数据模型中。

将此属性添加到由 dataGelen 表示的类

var image : UIImage?

并删除 Controller 中的imageDeneme

然后在 cellForItemAt 中检查模型中的名称图像是否存在,仅当检查结果为 false 时才加载它

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! itemsCell

let dataGelen = itemler[indexPath.item]
cell.titleLabel.text = dataGelen.itemTitleLabel
if let image = dataGelen.image {
cell.itemsimageView.image = image
} else if let cellDataImage = dataGelen.itemImageName {
let url = URL(string: cellDataImage)
URLSession.shared.dataTask(with: url!) { (data, _, error) in
if let error = error { print(error); return }
DispatchQueue.main.async {
let image = UIImage(data: data!)
cell.itemsimageView.image = image
self.dataGelen.image = image
}
}.resume()
}
return cell
}

didSelectItemAt中从模型获取图像

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

let homecon = HomeController(collectionViewLayout: UICollectionViewLayout())
let dataGelen = itemler[indexPath.item]
homecon.name = dataGelen.itemTitleLabel!
homecon.imageDenemeHome = dataGelen.image
homecon.showDetailPage()

}

关于swift - 从单元格到新 View Controller 的图像传输通常会加载错误的图像,有什么方法可以解决这个问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57834665/

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