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.