iOS Q & A


How do I dismiss a view controller?

Dismissing a view controller is a common task in iOS app development, particularly when implementing modal presentations or navigation-based transitions. Here are several methods for dismissing a view controller in iOS:


  • Using Modal Presentation: If the view controller was presented modally using present(_:animated:completion:), you can dismiss it by calling dismiss(animated:completion:) on the presenting view controller. This method removes the presented view controller from the screen and returns control to the presenting view controller.
  • Using Navigation Controller: If the view controller is part of a navigation stack managed by a navigation controller, you can dismiss it by popping it off the navigation stack using popViewController(animated:). This method removes the top view controller from the navigation stack and transitions back to the previous view controller.
  • Using Unwind Segue: If the view controller was presented using an unwind segue, you can dismiss it by performing the unwind segue programmatically. Implement an unwind action method in the presenting view controller and call performSegue(withIdentifier:sender:) to trigger the unwind segue and dismiss the presented view controller.
  • Using Delegate Pattern: If the presenting view controller acts as a delegate for the presented view controller, you can dismiss the presented view controller by calling a delegate method to notify the presenting view controller to dismiss it. Implement the necessary delegate protocol methods to handle the dismissal logic.
  • Using Completion Handlers: When dismissing a view controller, you can provide a completion handler to be executed after the dismissal animation completes. Use the completion handler to perform additional actions or update the app’s state as needed after dismissing the view controller.
  • Using NotificationCenter: If the dismissal of the view controller is triggered by an event or condition unrelated to the presenting view controller, you can post a notification using NotificationCenter to signal the need for dismissal. Implement an observer in the presenting view controller to listen for the notification and dismiss the presented view controller accordingly.


Choose the appropriate method for dismissing a view controller based on the presentation style, navigation context, and architectural considerations of your iOS app. By understanding these dismissal techniques, you can effectively manage the presentation and dismissal of view controllers to create intuitive and responsive user interfaces.


Previously at
Flag Argentina
time icon
Skilled iOS Engineer with extensive experience developing cutting-edge mobile solutions. Over 7 years in iOS development.