Hello guys,
I have a general design problem with iPhone application. I want to know the main principle how to go from normal view with navigationController to tabBarController with tabs where each tab has it's own navigationController (dont need first navigationController any more).
Let me show you how I made this:
First I added some view with a button to navigationController. AppDelegate adds this navigationController (with view controller of course) as subView to window:
[window addSubview:navigationController.view];
When I get to that new view (with navigationController on top) I click on button that takes me to new view which has tabBarController (with his own navControllers):
SearchViewController *searchViewController = [[SearchViewController alloc] initWithNibName:@"SearchView_iPhone" bundle:nil];
searchViewController.tabBarItem.title = @"FirstTab";
UINavigationController *searchNavigationController = [[UINavigationController alloc] initWithRootViewController:searchViewController];
SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsView_iPhone" bundle:nil];
settingsViewController.tabBarItem.title = @"SecondTab";
UINavigationController *settingsNavigationController = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
//Add navigation controllers to tabBar controller
tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:searchNavigationController, dictionariesNavigationController, settingsNavigationController, nil];
Ok, I added all views (with navControllers) to tabBarController. All I have to do is to push tabBarController to be seen:
[self.navigationController pushViewController:tabBarController animated:YES];
But after that I see that navigationController from first view is still present on views with tabBars. This is logical, because I pushed tabBarController with navigationController. So I did this to hide it:
self.navigationController.navigationBarHidden = YES;
Now it looks ok. All of the tabBar views has it's own navController.
THE MAIN PROBLEM: When I want to push another view (settingsResultsViewController) from subviewed table (settingsTableViewCell) which is in settingsViewController nothing happens. Here is the code:
SettingsResultsViewController *settingsResultsViewController = [[SettingsResultsViewController alloc] initWithNibName:@"SettingsResultsView_iPhone" bundle:nil];
[self.navigationController pushViewController:settingsResultsViewController animated:YES];
I also tried to push this view with appDelegate like this:
[delegatePhone.settingsViewController.navigationController pushViewController:settingsResultsViewController animated:YES];
[delegatePhone.firstViewController.navigationController pushViewController:settingsResultsViewController animated:YES];
But again nothing happens.
I assume that the main problem is in navigationControllers. The first navigationController is still somewhere in the back while I want to push with current navController on that particular tabBar.
Is there a way to push new view (tabBarController in my case) from first view other than with navigationController ?
All I want is when the button on firstView is clicke that app takes me to tabBarController and forget about firstView (and first navigationController) at all - I dont need them any more.
Hope I made it clear.
Thanks for all your help. I really appriciate it.