2010-03-25 10 views
0

J'ai une application, où il y a un UITabBar avec 5 onglets. Lorsque l'utilisateur secoue le périphérique, je souhaite que UINavigationBar appuie sur un UIImageView. Quand je montre UIImageView, j'ai besoin de cacher à la fois les barres de tabulation et de navigation. Après cela, lorsque l'utilisateur appuie sur UIImageView, la NavBar réapparaît et l'utilisateur peut accéder à la vue parente de UIImageView. Je fais apparaître la barre de navigation comme ceci:Comment ne pas faire un bouton afficher UINavigationBar seulement dans 3 sur 5 onglets dans UITabBar?

[[self navigationController] setNavigationBarHidden: NON animé: OUI];

Mais dans deux onglets, je dois faire apparaître la barre de navigation, afin que l'utilisateur puisse basculer vers la vue parente de UIImageView et, lorsque la vue parente apparaît, cacher la barre de navigation. Comment puis-je le faire?

Répondre

0

C'était plus facile que je pensais. Je dois juste mettre

- (void)viewDidAppear:(BOOL)animated { 
    [self.navigationController setNavigationBarHidden:YES animated:NO]; 
    [super viewDidAppear:animated]; 
} 
0

Je pense que vous devez mettre en place un délégué de UITabBarController et mettre en œuvre cette méthode:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    // Put real logic here 
    BOOL shouldHideNavBar = (viewController == myViewController1 || viewController == myViewController4); 
    [[self navigationController] setNavigationBarHidden:shouldHideNavBar animated:YES]; 
} 
+0

XCode donne sur une erreur « expression attendue avant myViewController1 » – Knodel

+0

J'ai réussi à se débarrasser de l'erreur en créant des objets de chaque classe UIViewController et de les mettre à la place de myViewController1 et myViewController4, mais ça ne marche pas. Le Nav Bar reste intact à sa place. – Knodel

+0

Comment le faire au mieux dépend de la structure de votre application. Assurez-vous qu'un objet qui conserve des références à vos contrôleurs de vue est un délégué de UITabBarController. Ensuite, vérifiez ce qui est passé comme _viewController_ à cette méthode de délégué, s'il s'agit d'un contrôleur de navigation, remplacez [self navigationController] par (UINavigationController *) viewController. Je ne peux pas vérifier le comportement exact en ce moment, mais c'est très probable. – Costique