How to dismiss ViewController in Swift?

Posted by Wei on March 15, 2017

Question

I am trying to dismiss a ViewController in swift by calling dismissViewController in an IBAction.

@IBAction func cancel(sender: AnyObject) {
    self.dismissViewControllerAnimated(false, completion: nil)
    println("cancel")
}

@IBAction func done(sender: AnyObject) {
    self.dismissViewControllerAnimated(false, completion: nil)
    println("done")
}

I could see the println message in console output but ViewController never gets dismissed. What could be the problem?

Answer

Using Segue

If you present the viewController by pushing, you should use below to dismiss

navigationController.popViewControllerAnimated(true)

Using Modal

The dismiss is used to close ViewControllers that presented using modal

dismiss(animated: true, completion: nil)

Reference


This is the end of post