从单元格到新视图控制器的图像传输主要加载错误的图像有没有办法解决这个问题?

Image transfer from cell to new view controller load wrong images mostly is there any way to fix this problem?

周末愉快。我对从单元格到新视图控制器的图像传输有疑问。我是 swift 的新手,我认为这个问题可以很容易地解决,但实际上我找不到我尝试过的协议等,但它无法解决我的问题。我有一些带有一些图像的单元格,每个单元格都有不同的图像,导航视图控制器应该显示与单元格图像完全相同的图像。在这一点上,我从单元格中获取图像并为该图像提供一个变量名称并调用视图控制器并从图像视图中添加等于此图像但它工作错误。在这里我的代码你会清楚地理解。对不起我的英语。

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

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()

}

和来自视图控制器的代码:

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


        self.itemDetailImage.image = imageDetail


}

有什么方法可以拍这张照片吗?我没有使用故事板。我只使用代码。谢谢..

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

将此 属性 添加到由 dataGelen

表示的 class
var image : UIImage?

并删除控制器中的imageDeneme

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

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()

}