Question: I have 3 navigation controllers. Each with many view controllers.

* **1** `NavigationController (modal Segue)`-> **2** `NavigationController (model Segue)`-> **3** `NavigationController`

Now, how do you go from #3 NavigationController back to #1 NavigationController that I have been before? So I want

* **1** `NavigationController (modal Segue)`-> **2** `NavigationController (model Segue)`-> **3** `NavigationController` (HOW???)-> **1** `NavigationController`

(To clarify, I would not want to go to a new **1** `NavigationController`. I want to go to the one that I used before.)

Help!

Answer: 
If you just want to dismiss the whole stack of **3** `NavigationController`, you can call this within any view controller in the **3**

**Objective C**

```
[self.navigationController dismissViewControllerAnimated:YES completion:nil]

```

**Swift 3, 4**

```
self.navigationController?.dismiss(animated: true)

```

This will bring you back to the status before `(model Segue)->` **3** `NavigationController`.

Maybe you can somehow call this in **2** before calling this in **3**?
this code will pop a navigation controller with all view controllers in it

```
// pop root view controller
UIViewController *rootViewController = [self.navigationController viewControllers][0];
[rootViewController dismissViewControllerAnimated:YES completion:nil];

```

so you can do something like this:

```
// pop navigationController3 without animation
UIViewController *rootViewController3 = [navigationController3 viewControllers][0];
[rootViewController3 dismissViewControllerAnimated:NO completion:nil];

// pop navigationController2 with animation
UIViewController *rootViewController2 = [navigationController2 viewControllers][0];
[rootViewController2 dismissViewControllerAnimated:YES completion:nil];

```