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

Pass image from one view controller to another controller gives nil

我正在尝试将图像发送到 预览控制器,如下所示。我的问题是 preview controller 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])

    }
}

预览控制器

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

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

instantiateViewController 调用 viewDidLoad(),因此在调用它时您不会设置图像。将代码移至 viewWillAppear() 即可正常工作

你应该使用 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])

    }

 }