2017-08-22 128 views
-2

我想在另一个视图控制器(“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) 
} 

能否请你帮我这个问题?

回答

-1

最快的方法是,初始化全局图像并将该图像传递给它。

写这些代码的任何文件(理想地命名为适当),以外的任何类或结构的:

var globalImage: UIImage? 

然后从照相机有保存图像,在任何VC显示它,并且当用户按下保存,加它无论你想要什么。只要确保您安全地打开图像以避免崩溃。

+0

为什么我的回答投下了票?它解决了这个要求 –

1

在第一个视图控制器,你可以添加类变量:

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! 

,并在第二个视图控制器的视图设置你的图像视图图像做负载方法

我敢肯定有做它的其他方式。

相关问题