58 votes

Comment masquer/afficher la barre d'onglets d'une vue avec une barre de navigation dans iOS ?

J'ai des vues avec une barre de navigation et une barre d'onglets. Je voudrais masquer la barre d'onglets dans une certaine vue et la réafficher lorsque l'utilisateur change de vue.

J'ai vu un bout de code pour cacher la barre d'onglets :

-(void)makeTabBarHidden:(BOOL)hide
{
    // Custom code to hide TabBar
    if ( [tabBarController.view.subviews count] < 2 ) {
        return;
    }

    UIView *contentView;

    if ( [[tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) {
        contentView = [tabBarController.view.subviews objectAtIndex:1];
    } else {
        contentView = [tabBarController.view.subviews objectAtIndex:0];
    }

    if (hide) {
        contentView.frame = tabBarController.view.bounds;       
    }
    else {
        contentView.frame = CGRectMake(tabBarController.view.bounds.origin.x,
             tabBarController.view.bounds.origin.y,
             tabBarController.view.bounds.size.width,
             tabBarController.view.bounds.size.height - tabBarController.tabBar.frame.size.height);
    }

    tabBarController.tabBar.hidden = hide;
}

de : http://nickwaynik.com/iphone/hide-tabbar-in-an-ios-app/

J'appelle ceci sur la vue dans laquelle je veux que la barre d'onglets soit cachée.

[self makeTabBarHidden:YES];

cela fonctionne bien lorsque je l'affiche/masque sur cette vue mais lorsque je retourne à la vue précédente, la barre d'onglets est également masquée. J'ai essayé d'appeler cette fonction dans la vue viewDidUnload , viewWillDisappear , viewDidDisappear mais rien ne se passe. Il en va de même lorsque la fonction est appelée dans la vue précédente. viewDidLoad , viewWillAppear , viewDidAppear fonctions.

144voto

ushika Points 701

Vous pouvez définir l'option UIViewController.hidesBottomBarWhenPushed à la place :

DetailViewController *detailViewController = [[DetailViewController alloc] init];
detailViewController.hidesBottomBarWhenPushed = YES;
[[self navigationController] pushViewController:detailViewController animated:YES];    
[detailViewController release];

36voto

Suragch Points 197

Vous pouvez également le faire dans le constructeur d'interface pour un storyboard. Sélectionnez le contrôleur de vue pour lequel vous souhaitez masquer la barre d'onglets, puis sélectionnez "Hide Bottom Bar on Push".

enter image description here

13voto

boliva Points 2588

Je viens de créer une catégorie sur UITabBarController qui permet de cacher la TabBar, éventuellement avec une animation :

https://github.com/idevsoftware/Cocoa-Touch-Additions/tree/master/UITabBarController_setHidden

Il ajoute le tabBarHidden (avec isTabBarHidden comme son getter) et le - (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated méthode.

3voto

Yogesh Dalavi Points 185
self.navigationController.hidesBottomBarWhenPushed=YES;

Ajoutez cette ligne à votre viewDidLoad o viewWillAppear cela cachera votre onglet du bas.

2voto

Sandu Points 262

Swift 3 : Masquer la barre d'onglets dans viewWillAppear o viewDidAppear

self.tabBarController?.tabBar.isHidden = true

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X