【发布时间】:2018-01-12 04:24:22
【问题描述】:
segue 和 instanceViewController 有什么区别?
我一直在试图弄清楚如何使用 segues 将图像从一个视图控制器发送到另一个视图控制器和 2 个答案(Passing Image to another View Controller (Swift) 和 How do I segue an image to another ViewController and display it within an ImageView?)都说要使用 segues,但是在尝试使用 segues 时我遇到了一些问题,例如照片库关闭后第二个视图控制器未显示或图像未显示。
转义示例
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination is XferImageViewController {
print("Test: ", pickedImage.image)
let xferVC = segue.destination as? XferImageViewController
xferVC?.storedImage = pickedImage.image
}
print("WHAT IS GOING ON")
// if segue.destination is XferImageViewController {
// let xferVC = segue.destination as? XferImageViewController
// print(pickedImage.image)
// //xferVC?.storedImage = pickedImage.image
// xferVC?.storedImage = pickedImageVar
// }
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
pickedImage.image = image
} else {
print("Something went wrong")
}
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
dismiss(animated:true, completion: nil)
performSegue(withIdentifier: "xferImage", sender: self)
}
InstantiateViewController 示例
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
pickedImage.image = image
} else {
print("Something went wrong")
}
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
dismiss(animated:true, completion: nil)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "xferImage") as! XferImageViewController
controller.storedImage = image
present(controller, animated: true, completion: nil)
}
所以在使用 InstantiateViewController 而不是 segue 之后,我得到了我想要的结果。两者有什么区别? (我确定了那个 segue 标识符,尝试了 segue.destination 和 storyboard ID,但仍然没有得到我需要的东西)在照片库关闭呼叫后我可能不知道如何使用 segue,但仍然想知道区别。
【问题讨论】:
-
您在使用 segue 时是否在控制台上收到任何消息?如果是这样,请将该消息添加到问题中。