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:
In applicationDidFinishLoading
in App delegate:
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[window makeKeyAndVisible];
[window addSubview:navController.view];
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:
- (void)clickedAButton:(id)selector {
SecondViewController *nextViewController = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
// and push it onto the 'navigation stack'
[self.navigationController pushNavigationController:nextViewController animated:YES];
// and release
[nextViewController release];
}
And in your SecondViewController
you can navigate back through the stack using:
- (void)clickedAnotherButton:(id)selector {
// goes back to the last view controller in the stack
[self.navigationController popViewControllerAnimated:YES];
}
So for you it would go:
Set up navigation controller in the app delegate with Brand
as the root view controller
User chooses their brand and you pushViewController:animated:
the Model
view controller. Then the user chooses their model and you pushViewController:animated:
the Color
view controller. Similarly the user chooses a color and you push the Pippo
view controller. Now, if the user presses back (or you call popViewControllerAnimated:
) it will go back to the Color
view controller in the same state as when the user left it to go to the Pippo
controller.