Before:
My App is based on indepent view controllers. I can switch from one to another by replacing the root view controller on the application delegate:
ade.window.rootViewController = newController;
… and all worked right, till now.
Tomorrow:
we have to add a NavigationController-based part of our App, which will help the users navigate through our:
Brands => Model Names => Colors
So, the user will choose a color, then click a button: now I will switch to another UIViewController (call it “pippo”), which actually resides outside that navigation hierarchy (I can’t push it in the nav-controller for several methods, I’m forced doing so!).
What I want is to get back to my “Color” screen, from “pippo”. So, I’m looking for a way to programmatically “navigate” the navigation controller I restore, I mean:
-
I restore my navigation controller
-
now I’m on Brands, but I don’t want my users to be here, I want to show them the last color they was on (I saved it in the preferences)
-
how can I simulate the selection of a known brand and model?
Thanks a lot.
In
applicationDidFinishLoadingin App delegate:That will instantiate the navigation controller and add it to the window as a view.
Now, in your rootViewController class (lets say its called
FirstViewController) you can do this:And in your
SecondViewControlleryou can navigate back through the stack using:So for you it would go:
Set up navigation controller in the app delegate with
Brandas the root view controllerUser chooses their brand and you
pushViewController:animated:theModelview controller. Then the user chooses their model and youpushViewController:animated:theColorview controller. Similarly the user chooses a color and you push thePippoview controller. Now, if the user presses back (or you callpopViewControllerAnimated:) it will go back to theColorview controller in the same state as when the user left it to go to thePippocontroller.