将图像从一个视图控制器传递到另一个控制器给出nil
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将图像从一个视图控制器传递到另一个控制器给出nil相关的知识,希望对你有一定的参考价值。
我正在尝试将图像发送到预览控制器,如下所示。我的问题是在预览控制器中newImage
是nil
以下是代码:
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 从一个视图控制器传递到另一个视图控制器
当数据从一个视图控制器传递到另一个视图控制器时,我如何能够传递图像?