Search code examples
iosswiftuiimagepickercontroller

Present a ViewController, dismiss it, and then segue into another View


I'm trying to do the following:

  1. User presses button
  2. UIImagePickerController pops up
  3. User selects image
  4. UIImagePickerController is dismissed
  5. Segue into another ViewController

As of now, I have it set up that when the user presses a button, a UIImagePickerController is initialized and presented with presentViewController. It is also delegated to the class that this button is linked to as well. After the user picks an image, imagePickerController is called, and dismissViewControllerAnimated is also called. Then, performSegueWithIdentifier is called. However, this last step throws the following warning, and then does not segue:

2016-09-15 03:45:44.870 Food Diary[9941:1540144] Warning: Attempt to present on whose view is not in the window hierarchy!

I am very new to Swift and iOS development, what does this mean and how do I fix it?


Solution

  • Perform segue on completion of dismiss of UIImagePickerController

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        // your code
        self.dismissViewControllerAnimated(true, completion: {
            self.performSegueWithIdentifier("SegueIdentifier", sender: self)
        })
    }
    

    Note: With sender I have passed current Controller object you can any object that you want.