2013-04-05 4 views
6

Je suis en train de développer une application ios, et dans cette application j'utilise un contrôleur de tabulation. Et depuis le contrôleur de la barre d'onglets, naviguez vers un autre contrôleur de vue. Avant de pousser le contrôleur Environnment im une propriété de ce contrôleurBarre d'onglets apparaissant après l'ouverture d'un contrôleur de vue

viewController.hidesBottomBarWhenPushed = YES; 

Et im navigation à un autre contrôleur de vue qui a la barre d'onglets en bas. Le problème est que lorsque j'applique le contrôleur de vue au contrôleur de vue, la barre d'onglets apparaît également dans cette vue. Est-il possible de masquer la barre d'onglets lors de l'ouverture d'un contrôleur de vue?

Ce sera génial si quelqu'un peut m'aider avec ça.

Merci d'avance.

+0

montrez le code comment avez-vous mis tabbar? –

Répondre

3

Dans ce cas, la méthode viewWillAppear sera utile. dans votre firstviewcontroller mettre ce code

-(void)viewWillAppear:(BOOL)animated 
{ 
    self.tabBarController.tabBar.hidden = YES; 
} 

Alors, quand secondviewcontroller poped est interrompu, il appellera cette méthode et votre barre inférieure sera cachée.

+0

J'ai essayé ceci, mais cela ne fonctionnera pas parce que le contrôleur de vue n'est en fait pas poussé à ce stade. Le scénario est lorsque l'utilisateur revient en arrière. – era

+1

Cette méthode est appelée lorsque l'utilisateur ne revient pas lorsque l'utilisateur a appuyé sur une autre vue. Vous devez donc déclarer 'viewController.hidesBottomBarWhenPushed = YES;' 2 fois. d'abord dans la méthode 'viewDidLoad' et ensuite dans' viewWillAppear' mthod. – Dilip

+0

J'ai essayé de définir l'attribut dans la vue a fait charger aussi .. mais toujours la barre d'onglets est là. – era

0

Placez quand vous cliquez sur le bouton Précédent

[self.tabBarController.tabBar setHidden:YES]; 

[UIView animateWithDuration:0.5 
        animations:^{ 
         self.tabBarController.tabBar.frame = CGRectMake(self.tabBarController.tabBar.frame.origin.x, self.tabBarController.tabBar.frame.origin.y+self.tabBarController.tabBar.frame.size.height, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height); 
       } 

J'ai une autre réponse ...

place ces deux méthodes dans tous les ViewController et gérer lesBOOLvariable qui estself.hidesBottomBarWhenPushed à YES et NOselon vos besoins

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.hidesBottomBarWhenPushed = YES; 
} 
- (void)viewDidDisappear:(BOOL)animated 
{ 
    self.hidesBottomBarWhenPushed = NO; 
} 
+0

J'ai aussi essayé. La chose est que vous pouvez cacher la barre d'onglet, il laisse un espace vide en bas. Quand j'ai essayé de mettre le cadre de vue en plein écran, cela n'a pas fonctionné. – era

+0

Comme vous l'avez dit, d'abord firstview a la barre du bas, puis poussé, il va se cacher à droite? et quand surgi du viewController poussé alors il devrait cacher ... est ce votre besoin ou m manquant n'importe quoi –

+0

firstview (a la barre inférieure) -> secondview (cache la barre inférieure) -> thirdview (a la barre inférieure) Puis im popping la troisième vue et revenir à la deuxième vue la barre du bas est là .. je dois m'en débarrasser. Si je fais ce que vous avez suggéré, je laisserai un espace vide en bas. – era

0

Cela dépend de la conception de votre application, vous pouvez définir un objet central en tant que délégué du contrôleur de navigation. Et masquer/afficher la barre d'onglets. cette question hidesBottomBarWhenPushed but when popped fournit également une solution mais je n'aime pas. En passant, il n'est pas courant d'afficher de nouveau la barre du bas lorsque l'utilisateur passe au niveau inférieur ou supérieur.

0

Vous pouvez à la place présenter le deuxième contrôleur de vue sur le contrôleur de la barre d'onglets. Si vous souhaitez que le second contrôleur de vue dispose d'une barre de navigation, vous pouvez le placer dans un nouveau contrôleur de navigation. Si cela ne résout pas votre problème, vous pouvez créer un contrôleur de barre d'onglets personnalisé de sorte qu'il puisse se trouver dans un contrôleur de navigation. Vous pouvez pousser le deuxième contrôleur de vue sur ce contrôleur de navigation. Pour créer un contrôleur de barre d'onglets personnalisé, vous pouvez vous référer à Apple Documentation on Creating Custom Container View Controllers. Je pense que cela fonctionne bien sur iOS 5 et supérieur.

Questions connexes