Bonjour les gars,Comment naviguer correctement de NavigationController à tabBarController avec ses propres navigationControllers
J'ai un problème de conception générale avec l'application iPhone. Je veux savoir le principe principal comment passer de la vue normale avec navigationController à tabBarController avec des onglets où chaque onglet a son propre navigationController (ne pas besoin de premier navigationController plus).
Permettez-moi de vous montrer comment je fait ceci:
D'abord, j'ajouté une vue avec un bouton pour NavigationController. AppDelegate ajoute ce NavigationController (avec vue sur le contrôleur bien sûr) comme sous-vue à la fenêtre:
[window addSubview:navigationController.view];
Quand je reçois à cette nouvelle vue (avec NavigationController sur le dessus) je clique sur le bouton qui me prend à la nouvelle vue qui a tabBarController (avec ses propres 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, j'ai ajouté toutes les vues (avec navControllers) à tabBarController. Tout ce que je dois faire est de pousser tabBarController à voir:
[self.navigationController pushViewController:tabBarController animated:YES];
Mais après que je vois que NavigationController de la première vue est toujours présent sur les vues avec tabBars. C'est logique, parce que j'ai poussé tabBarController avec navigationController. Donc, je l'ai fait pour le cacher:
self.navigationController.navigationBarHidden = YES;
Maintenant ça a l'air ok. Toutes les vues tabBar ont leur propre navController.
LE PROBLÈME PRINCIPAL: Lorsque je veux pousser une autre vue (settingsResultsViewController) de la table sous-visualisée (settingsTableViewCell) qui est dans settingsViewController rien ne se passe. Voici le code:
SettingsResultsViewController *settingsResultsViewController = [[SettingsResultsViewController alloc] initWithNibName:@"SettingsResultsView_iPhone" bundle:nil];
[self.navigationController pushViewController:settingsResultsViewController animated:YES];
J'ai essayé aussi de pousser ce point de vue avec appDelegate comme ceci:
[delegatePhone.settingsViewController.navigationController pushViewController:settingsResultsViewController animated:YES];
[delegatePhone.firstViewController.navigationController pushViewController:settingsResultsViewController animated:YES];
Mais encore une fois rien ne se passe.
Je suppose que le problème principal est dans les contrôleurs de navigation. Le premier navigationController est encore quelque part à l'arrière alors que je veux pousser avec navController actuel sur ce tabBar particulier.
Existe-t-il un moyen de pousser une nouvelle vue (tabBarController dans mon cas) à partir de la première vue autre que navigationController? Tout ce que je veux, c'est quand le bouton sur firstView est clicke que cette application m'amène à tabBarController et oublie firstView (et first navigationController) - je n'en ai plus besoin.
J'espère que j'ai été clair.
Merci pour votre aide. Je l'apprcie vraiment.
Je googlé pour la solution et quelqu'un dit que je dois mettre tabBarController en tant que contrôleur de vue racine. Est-ce correct? Comment puis je faire ça ? –