2010-08-16 2 views
0

.hidesBottomBarWhenPushed = NO; ne fonctionne pas parce que la vue n'est pas poussée. Je veux que le tabBar soit caché sur le premier écran et capable de le montrer à nouveau quelques écrans plus tard.Comment cacher le tabBar lors du premier chargement et le montrer sur les écrans suivants?

Comment est-ce que je peux faire ceci?

+0

ne le créez pas encore? : p –

+0

Les tags sont géniaux. Pourrait vouloir mentionner dans le texte de la question que vous travaillez avec l'objectif C pour iOS. A dû le lire quelques fois pour le comprendre. – ford

Répondre

1

Sous votre UITabBarController et ajoutez une fonction comme celui-ci

- (void) hideTabBar:(BOOL)hide animated:(BOOL)animated { 

    if (tabBarHidden == hide) { return; } 

    if (animated) { 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:1.5]; 
    } 

    for(UIView *view in self.view.subviews) { 

     if([view isKindOfClass:[UITabBar class]]) { 

      if (!hide) { 
       [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y-49, view.frame.size.width, view.frame.size.height)]; 
      } else { 
       [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y+49, view.frame.size.width, view.frame.size.height)]; 
      } 
     } else { 
      if (!hide) { 
       [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height-49)]; 
      } else { 
       [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height+49)]; 
      } 

     } 
    } 

    if (animated) { [UIView commitAnimations]; } 

    tabBarHidden = hide; 

} 

Pendant que vous y êtes, ajoutez une fonction comme celui-ci pour permettre à la barre d'onglets pour faire tourner

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return allowRotate; 
} 
+0

Merci, je vais donner un coup de feu, et je pense que je dois faire une autre question pour modifier le comportement de tabBar autre. La conception appelle un écran d'enregistrement au démarrage, mais si vous avez déjà enregistré (chargement à partir du téléphone et envoi au serveur), pour passer à l'écran suivant, où les tabBars sont affichés. Maintenant, en appuyant sur l'onglet vous ramène à l'écran d'enregistrement d'origine, lorsque la conception appelle pour vous amener à la vue tabBar que vous voyez après vous être inscrit. * _ * – quantumpotato

+0

Si cela fonctionne pour vous, j'apprécierais que vous signaliez la réponse comme correcte! – adam

1

Cela va être difficile parce que les onglets sont conçus pour être le plus haut niveau de l'interface utilisateur de l'application. La documentation est très claire à ce sujet. En tant que tels, ils ne jouent pas bien dans une hiérarchie de contrôleur dans laquelle ils ne sont pas au top. Vraiment la seule façon d'accomplir ce que vous voulez est de créer par programmation la barre d'onglets quand vous voulez qu'elle apparaisse. Cependant, je ne peux pas dire que cela produira un code fiable. La barre d'onglets vous combattra tout le chemin.

Vous devriez vraiment repenser votre conception de l'interface utilisateur. L'utilisation de la barre d'onglets d'une manière non standard va dérouter vos utilisateurs. Comme la norme est d'avoir des tabulations au niveau supérieur de l'interface utilisateur, les utilisateurs croient qu'ils sont au niveau supérieur lorsqu'ils voient une barre d'onglets. Ils seront désorientés. Vous devez vraiment vous en tenir à une utilisation standard pour que votre application soit compatible avec la grammaire de l'interface que les utilisateurs ont apprise.

Voir la iPhone Human Interface Guidelines.

+0

Je n'aime pas beaucoup cette implémentation non plus. Je n'ai pas conçu l'interface utilisateur, mais je dois la coder. Je vais vérifier par programme en créant le tabBar. – quantumpotato

+0

Je ressens votre douleur. Peu de choses sont pires que d'être piégé en mettant en œuvre un mauvais design. – TechZen

Questions connexes