user3250926
user3250926

Reputation: 127

Pop to initial view controller

I am currently writing an app that uses embedded navigationControllers. I need to pop to the initial view of the first view controller from within the embedded one.

This line of code just returns me to the initial view of the embedded navigationController:

[self.navigationController popToRootViewControllerAnimated:YES];

Any ideas?

Upvotes: 3

Views: 1597

Answers (2)

odemolliens
odemolliens

Reputation: 2641

Swift version:

func recursivePop(controller: UIViewController?){

    if let controller = controller {
        if let nav:UINavigationController = controller.navigationController {
            nav.popToRootViewControllerAnimated(true)
            self.recursivePop(controller)
        }

    if let split:UISplitViewController = controller.splitViewController {
            if let nav:UINavigationController = split.navigationController {
                nav.popToRootViewControllerAnimated(true)
                self.recursivePop(controller)
            }
        }
    }
}

Upvotes: 0

GregP
GregP

Reputation: 1624

You could do some recursive function like this. Name this whatever you would like or make it a category for convenience.

- (void)recursivePop:(UIViewController *)viewController
{
   if (viewController.navigationController)
   {
       [viewController.navigationController popToRootViewControllerAnimated:YES];
       [self recursivePop:viewController.navigationController];
   }
}

Then in the view controller you want to invoke this with call it like this.

[self recursivePop:self];

Upvotes: 6

Related Questions