有没有办法将 segue 操作延迟到用户通过他们的照片库选择图像或拍照之后? SWIFT
Is there a way to delay the segue action until after the user picks an image through their photo library or takes a photo? SWIFT
我是编程新手,我有两个按钮,一个是相机,另一个是选择现有照片。我可以使用相机按钮访问相机功能,并尝试将我拍摄的图像显示到另一个视图控制器中的 UIImage 上。我的代码给我一个无法在拍摄前呈现快照的错误。我认为这是因为我还试图将按钮用作 segue 来显示新的视图控制器。有没有办法将 segue 操作延迟到用户通过他们的照片库选择图像或拍照之后?
@IBAction func camera(发件人:AnyObject){
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .Camera
presentViewController(picker, animated: true, completion: nil)
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
self.performSegueWithIdentifier("Show", sender: self)
func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
{
if segue.identifier == "Show" {
imageDisplay.image = info[UIImagePickerControllerOriginalImage] as? UIImage
dismissViewControllerAnimated(true, completion: nil)
}
}
}
这是我的按钮代码。 imageDisplay 是我为 ImageView 创建的一个图像出口,为了让这段代码识别它,我将我的 ImageDisplayViewController 设为我的 main ViewController 的超类。
这是我收到的错误。
对尚未呈现的视图进行快照会生成空快照。确保您的视图在屏幕更新之前或快照之前至少渲染过一次。
不要将 segue from 按钮分配给 ViewController。将 segue 从 ViewController 分配到 ViewController。现在,当您从相机拍摄照片时,您将被重定向回 didfinishpicking 委托方法,在此方法中,do self.performSegueWithIdentifer 和 select 您的控制器来自 prepareforsegue。假设你的 segue 名称是 show.
我已经为你重写了代码。假设您的第二个 VC 是 displayImageVC。在那里创建一个 属性 作为 UIImage 类型的 showImage。然后在 prepareforsegue 中传递捕获的图像。
var capturedImage = UIImage?
let picker = UIImagePickerController() picker.delegate = self picker.sourceType = .Camera presentViewController(picker, animated: true, completion: nil)
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
self.capturedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
self.performSegueWithIdentifier("Show", sender: self)
}
func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if segue.identifier == "Show" {
let displayImageVC = segue.destination as displayImageVC
displayImageVC.showImage = self.capturedImage
}
}
我是编程新手,我有两个按钮,一个是相机,另一个是选择现有照片。我可以使用相机按钮访问相机功能,并尝试将我拍摄的图像显示到另一个视图控制器中的 UIImage 上。我的代码给我一个无法在拍摄前呈现快照的错误。我认为这是因为我还试图将按钮用作 segue 来显示新的视图控制器。有没有办法将 segue 操作延迟到用户通过他们的照片库选择图像或拍照之后?
@IBAction func camera(发件人:AnyObject){
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .Camera
presentViewController(picker, animated: true, completion: nil)
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
self.performSegueWithIdentifier("Show", sender: self)
func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
{
if segue.identifier == "Show" {
imageDisplay.image = info[UIImagePickerControllerOriginalImage] as? UIImage
dismissViewControllerAnimated(true, completion: nil)
}
}
}
这是我的按钮代码。 imageDisplay 是我为 ImageView 创建的一个图像出口,为了让这段代码识别它,我将我的 ImageDisplayViewController 设为我的 main ViewController 的超类。
这是我收到的错误。
对尚未呈现的视图进行快照会生成空快照。确保您的视图在屏幕更新之前或快照之前至少渲染过一次。
不要将 segue from 按钮分配给 ViewController。将 segue 从 ViewController 分配到 ViewController。现在,当您从相机拍摄照片时,您将被重定向回 didfinishpicking 委托方法,在此方法中,do self.performSegueWithIdentifer 和 select 您的控制器来自 prepareforsegue。假设你的 segue 名称是 show.
我已经为你重写了代码。假设您的第二个 VC 是 displayImageVC。在那里创建一个 属性 作为 UIImage 类型的 showImage。然后在 prepareforsegue 中传递捕获的图像。
var capturedImage = UIImage?
let picker = UIImagePickerController() picker.delegate = self picker.sourceType = .Camera presentViewController(picker, animated: true, completion: nil)
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
self.capturedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
self.performSegueWithIdentifier("Show", sender: self)
}
func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if segue.identifier == "Show" {
let displayImageVC = segue.destination as displayImageVC
displayImageVC.showImage = self.capturedImage
}
}