Search code examples
uinavigationcontrolleruinavigationbarback-buttonuinavigationitemback

Navigation Controller Back button to go to the screen before the previous screen


I'm wondering whether it's possible to go back to 2 previous page using navigation controller button. Right now, I've custom made the button using this code

self.navigationItem.leftBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:mainLib.navCountryTitle
                                 style:UIBarButtonItemStyleBordered
                                target:self
                                action:@selector(handleBack:)];

And on 'handleback' method, I called this line

[self.navigationController popViewControllerAnimated:YES];

So in this case it will go to the previous screen. However I want to go to the screen before the previous screen.

I know that i can call that screen straight away, but I wouldn't want to do that because in every screen I have a back button which supposed to go to its previous screen.


Solution

  • You can pop to particular viewcontroller using its pushing index. If you know the syntax than you can do that like

    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:indexOfViewController] animated:YES];
    

    I believe, In your case it would be 1st Index. Though you can again change index and check.

    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
    

    Here self.navigationController.viewControllers is the array of the all the ViewControllers pushed.

    Hope it helps.