在另一个视图控制器中快速显示图像(图像视图)
问题描述:
我想在另一个视图控制器(“Second”)中显示拍摄图像(VC“First”)。 当我点击“第一”中的按钮时,我可以拍照。然后我看到两个选项:重拍和使用照片。点击后:使用照片我回到了vc“First”,但我想打开新的vc“Second”并在UIImageView中看到图像。在另一个视图控制器中快速显示图像(图像视图)
我创建了“第一”这样的代码:
var imagePicker: UIImagePickerController!
@IBAction func takePhoto(_ sender: Any) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.camera
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
//self.performSegue(withIdentifier: "Second", sender: self)
}
能否请你帮我这个问题?
答
最快的方法是,初始化全局图像并将该图像传递给它。
写这些代码的任何文件(理想地命名为适当),以外的任何类或结构的:
var globalImage: UIImage?
然后从照相机有保存图像,在任何VC显示它,并且当用户按下保存,加它无论你想要什么。只要确保您安全地打开图像以避免崩溃。
答
在第一个视图控制器,你可以添加类变量:
var selectedImage: UIImage?
然后切换到Main.storyboard。
control +点击您的第一个视图控制器,然后从第一个视图控制器拖放到第二个视图控制器。在弹出窗口中选择“show”以创建一个segue。
现在在接口构建器中选择segue,并在属性中为其指定标识符“Second”。 (你可能已经做了,如果你有SEGUE已设置)
那么,你可以改变这个你现在的方法:
self.present(imagePicker, animated: true, completion: nil)
这样:
self.present(self, animated: true) {
self.performSegue(withIdentifier: "Second", sender: self)
}
,并添加准备对于第一种方法:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Second" {
let destinationVC = segue.destination as! Second
if let image = selectedImage {
destinationVC.selectedImage = image
}
}
}
并在第二个你可以添加类变量:
var selectedImage: UIImage!
,并在第二个视图控制器的视图设置你的图像视图图像做负载方法
我敢肯定有做它的其他方式。
为什么我的回答投下了票?它解决了这个要求 –