Question

J'ai une application navigationController.

Je pousse un onglet sur la vue. Les onglets sont le titre de travail est changé, parfait. Maintenant, un de mes onglets a une liste et j'essaie de faire un lien vers une page enfant dans la barre d'onglets:

NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"ProfileDetailController" bundle:nil];
[self.navigationController pushViewController:nextController animated:YES];

Rien ne se passe. Cours cela fonctionne:

self.view = nextController.view;

Je souhaite pouvoir accéder à cette sous-page dans ma barre d'onglets ET modifier les boutons des barres de navigation. Est-ce possible?

Était-ce utile?

La solution

On dirait que vous poussez un UITabBarController sur un UINavigationController ? De Documentation Apple , vous ne pouvez pas insérer un contrôleur de barre d’onglet sur un contrôleur de navigation.

Ce que vous voulez probablement faire est le contraire: avoir un contrôleur de barre d’onglet avec UINavigationController s en tant qu’éléments de tabulation. Ceci est similaire à l'interface de, disons, l'application iPod ou l'application Téléphone.

Autres conseils

Je suis d'accord avec Alex: un TabBarController à l'intérieur d'un contrôleur de navigation ne semble pas être un joli motif d'interface utilisateur.

Quoi qu'il en soit, pour répondre à votre question: avez-vous essayé d'accéder au contrôleur de navigation via le contrôleur de barre d'onglets?

self.tabBarController.navigationController

Je ne suis pas sûr que cela fonctionne, mais vous pouvez l'essayer.

Je pense avoir trouvé une solution facile.

Dans votre classe où vous souhaitez appliquer une vue, déclarez un UINavigationController local en tant que propriété:

@interface userMenu : UIViewController  {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;

N'oubliez pas de le synthétiser.

Dans votre classe pour le tabBarController :

NSArray *viewControllersArray = [self.tabBarController viewControllers];

userMenu *childUserMenu = (userMenu*) [viewControllersArray objectAtIndex:0];
childUserMenu.navigationController = self.navigationController;

Ensuite, vous pouvez faire [self.navigationController pushViewController: nextController animé: YES];

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top