将图像从一个视图控制器传递到另一个控制器给出 nil
Pass image from one view controller to another controller gives nil
我正在尝试将图像发送到 预览控制器,如下所示。我的问题是 preview controller 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])
}
}
预览控制器
@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])
}
}
我正在尝试将图像发送到 预览控制器,如下所示。我的问题是 preview controller 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])
}
}
预览控制器
@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])
}
}