繁体   English   中英

Swift如何从CollectionView中的准备准备中获取单元格

[英]Swift how to get cell from prepare for segue in collectionView

我正在使用自动布局,并且终生无法使用前一个视图控制器集合视图单元格的图像设置进行中的视图控制器图像视图。 我正在使用

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    performSegue(withIdentifier: "openDetailView", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "openDetailView" {
        let cell = sender as? ImageCollectionViewCell
        let detailVC = segue.destination as! DetailedImageViewController
        detailVC.imageToPresent = cell?.imageView.image

    }
}

这是我已经设置的用于接收图像的课程

class DetailedImageViewController : UIViewController{

var imageToPresent: UIImage!
@IBOutlet weak var imageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    imageView.image = imageToPresent
}

}

segue可以按预期执行,但是图像不会显示在detailImageViewController中。 提前致谢。

您需要将imageToPresent设置为UIImageview才能显示图像。

 
 
 
  
  class DetailedImageViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! var imageToPresent : UIImage! override func viewDidLoad() { super.viewDidLoad() imageView.image = imageToPresent } ...
 
  

在这种情况下,最好避免避免可选的展开。 尝试使用此代码,并检查错误是否发生。

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "openDetailView" {
        guard let cell = sender as? ImageCollectionViewCell else {
            assertionFailure("Failed to unwrap sender. Try to set a breakpoint here and check what sender is") 
            return 
        }
        let detailVC = segue.destination as! DetailedImageViewController
        guard let cellImage = cell.imageView.image else {
            assertionFailure("The cell has no image in image view") 
            return 
        }
        detailVC.imageToPresent = cellImage
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM