Dismiss View Controller to Particular View Controller

Viewed 5280

My View Contollers Login -> Main Menu -> A -> B -> C -> D

How do i dimiss all view controllers and go back to main menu

For Logout from my view controllers I am doing the following which takes back to Login

func logout{

    self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
 }

Now what i am doing is this

class AppDelegate: UIResponder, UIApplicationDelegate {
     var viewControllerStack: [BaseViewController]!
}

override func viewDidLoad() {
    super.viewDidLoad()
    super.appDelegateBase.viewControllerStack.append(self)  
}

func go_To_MainMenu(){
    var countOfNumberOfViewCOntrollers = self.appDelegateBase.viewControllerStack.count 

        switch countOfNumberOfViewCOntrollers{

             self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
            break;
        case 2:

            self.presentingViewController?.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
            break;
   }
}
6 Answers

Swift 5

This works for me

var presentingViewController = PresentingViewController()
self.dismiss(animated: false) {
    presentingViewController.dismiss(animated: false, completion: nil)
}

This worked for me,

self.view.window!.rootViewController?.presentedViewController?.dismiss(animated: true, completion: nil)

Related