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

sicKo picture sicKo · Apr 22, 2011 · Viewed 12.1k times · Source

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.

Answer

Janak Nirmal picture Janak Nirmal · Apr 22, 2011

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.