hidesBottomBarWhenPushed ignoré dans iOS 7

Ce code fonctionnait bien jusqu'à la sortie d'iOS 7. UIViewController un UIViewController , avec hidesBottomBarWhenPushed comme YES , en tant que rootViewController d'un UINavigationController . Mais le TabBar est montré de toute façon. Voici le code pertinent:

 Login *lv = [[Login alloc] init]; lv.HowToUseShows = showHowToUse; lv.hidesBottomBarWhenPushed = YES; UINavigationController *BokShelfNav = [[UINavigationController alloc] initWithRootViewController:lv]; //... UITabBarController *tbController = [[UITabBarController alloc] init]; tbController.viewControllers = @[BokShelfNav,...]; 

Quelqu'un avec un problème similaire?

J'ai découvert que l'ordre dans lequel les methods sont appelées et les propriétés définies a un impact sur l'affichage de la barre d'tabs.

Si je mets self.hidesBottomBarWhenPushed = YES; Dans la méthode viewDidLoad du controller de vue, je pousse toujours la barre d'tabs. Si je l'ai déplacé vers la méthode init , la barre d'tabs se cache comme sur iOS 6.

La seule solution de contournement que j'ai trouvée consiste à démarrer tabBarController dans un autre onglet ( [tbController setSelectedIndex:1]; ), puis, dans la méthode viewWillAppear: de cet onglet ViewController do [tbController setSelectedIndex:0];

J'ai mis setSelectedIndex après l'instruction de poussée et cela a fonctionné.

 //created tabbar controller object if(index==0) [tabbarcontroller setSelectedIndex:1]; [self.navigationcontroller pushViewcontroller:tabbarcontroller anmated:YES]; [tabbarcontroller setSelectedIndex:index]; 

Le seul problème est si vous montrez votre controller à l'index 0 en ce qu'il montrera. Dans ce cas, j'ai d'abord mis l'index de mt tabbarcontroller à 1 (différent de 0). Et son fonctionnement.