J'ai des vues avec une barre de navigation et une barre d'onglets. Ce que je voudrais, c'est masquer la barre d'onglets sur une vue donnée et l'afficher à nouveau lorsque l'utilisateur change de vue.
J'ai vu un extrait de code pour cacher la barre de tabulation:
-(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;
}
à partir de: http://nickwaynik.com/iphone/hide-tabbar-in-an-ios-app/
J'appelle cela la vue dans laquelle je veux masquer la barre d'onglets
[self makeTabBarHidden:YES];
cela fonctionne bien lorsque je le montre/le cache 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 les fonctions viewDidUnload
, viewWillDisappear
, viewDidDisappear
de la vue, mais rien ne se produit. Il en va de même lorsque la fonction est appelée dans les fonctions viewDidLoad
, viewWillAppear
, viewDidAppear
de la vue précédente.
Vous pouvez également définir UIViewController.hidesBottomBarWhenPushed:
DetailViewController *detailViewController = [[DetailViewController alloc] init];
detailViewController.hidesBottomBarWhenPushed = YES;
[[self navigationController] pushViewController:detailViewController animated:YES];
[detailViewController release];
Je viens de créer une catégorie sur UITabBarController qui vous permet de masquer le TabBar, éventuellement avec une animation:
https://github.com/idevsoftware/Cocoa-Touch-Additions/tree/master/UITabBarController_setHidden
Il ajoute la propriété tabBarHidden
(avec isTabBarHidden
comme getter) et la méthode - (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated
.
self.navigationController.hidesBottomBarWhenPushed=YES;
Ajoutez cette ligne à votre viewdidload
ou viewWillAppear
Cela vous cachera l'onglet du bas.
essayez ceci pour masquer/afficher;
-(void)viewWillDisappear:(BOOL)animated{
self.hidesBottomBarWhenPushed = NO;
}
-(void)viewWillAppear:(BOOL)animated{
self.hidesBottomBarWhenPushed = YES;
}
Swift 3: Définir la barre d’onglet masquer
self.tabBarController?.tabBar.isHidden = true
La même propriété est disponible sur l'inspecteur d'attributs lorsque vous cliquez sur votre contrôleur de vue sur votre fichier Xib ou storyboard.