Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to pop the UINavigationController twice? [duplicate]

Is it possible to pop the navigation controller twice? I have this navigation structure:

View One ----> View Two -----> View Three

What I'd like to accomplish is that by the tap of a row on View Three, go back directly to View One. I've done it from Three to Two via protocol-delegate, but setting the delegate in view One doesn't work and setting two consecutive delegate-protocol both poping the navigation controller, gives me error: nested navigation controller activity (or something similar).

Any help would be appreciated. Thanks in advance!

like image 411
Marcal Avatar asked May 30 '12 19:05

Marcal


Video Answer


2 Answers

Use the following code. You can use any number instead of -3 to pop to a different level.

Obj-C:

ViewController *View = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3];
    [self.navigationController popToViewController:View animated:YES];

Swift 3.0*:

let controller = self.navigationController?.viewControllers[(self.navigationController?.viewControllers.count)! - 3]        
self.navigationController?.popToViewController(controller!, animated: true)
like image 112
Fawad Masud Avatar answered Sep 19 '22 05:09

Fawad Masud


There is a few pop options

- (UIViewController *)popViewControllerAnimated:(BOOL)animated
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
  • The first pops the top controller.
  • The second allows you to pop the whole stack off to get to the root.
  • The third allows you to pop to any viewController you have a reference to. You can get the viewController with self.navigationController.viewControllers and then work with the array to get the specific viewController you want to pop to
like image 30
Paul.s Avatar answered Sep 23 '22 05:09

Paul.s