将图像从一个视图控制器传递到另一个控制器给出nil

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将图像从一个视图控制器传递到另一个控制器给出nil相关的知识,希望对你有一定的参考价值。

我正在尝试将图像发送到预览控制器,如下所示。我的问题是在预览控制器中newImagenil

以下是代码:

FirstViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    print("In here")
    if segue.identifier == "showImage" {

        let secondViewController = self.storyboard!.instantiateViewController(withIdentifier: "showImage") as! showImageController

        secondViewController.newImage =  UIImage(named: imageArray[0])

    }
}

PreviewController

@IBOutlet weak var imageHolder: UIImageView!
var newImage: UIImage!

override func viewDidLoad() {
    super.viewDidLoad()
    imageHolder.image = newImage
    // Do any additional setup after loading the view.
}
答案

您应该使用segue.destination而不是像这样创建一个新的

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

   print("In here")

   if segue.identifier == "showImage" {

        let next = segue.destination as! showImageController

        next.newImage =  UIImage(named: imageArray[0])

    }

 }
另一答案

instantiateViewController调用viewDidLoad(),因此在调用图像时不会设置图像。将代码移动到viewWillAppear(),它将工作

以上是关于将图像从一个视图控制器传递到另一个控制器给出nil的主要内容,如果未能解决你的问题,请参考以下文章

将 ImageData 从一个视图控制器传递到另一个视图控制器

将图像从集合视图控制器快速传递到另一个视图控制器

将数据从一个视图控制器传递到另一个(图像)

当数据从一个视图控制器传递到另一个视图控制器时,我如何能够传递图像?

通过preparesegue将图像从一个视图传递到另一个视图?

如何以编程方式将数据从表视图控制器传递到另一个控制器? [复制]