11

J'ai erré comment masquer/enlever/désactiver seulement la barre de navigation principale ou première dans le contrôleur de navigation afin que je puisse mettre une image comme un écran d'arrière-plan, mais je n'ai pas trouvé de solution.Comment masquer/désactiver uniquement la première barre d'uinavigation?

Vous avez essayé de masquer la vue de titre dans viewdidLoad du contrôleur de navigation principal, mais cela n'a pas fonctionné. Essayé en utilisant navigationBarHidden mais il cache toute la barre de navigation pour la prochaine pile de contrôleur.

Donc, je ne suis pas sûr de savoir comment faire cela. Pour vous donner un exemple, je voudrais avoir quelque chose comme cette application - The Masters Golf Tournament - http://appshopper.com/sports/the-masters-golf-tournament.

Si vous regardez l'écran 1, il n'a pas de barre de navigation en haut, mais quand vous touchez des options, il va pousser à un nouveau contrôleur de vue et avoir la barre de navigation comme dans l'écran 3,4 et 5

J'espère que n'importe qui pourrait m'aider avec ceci. Merci beaucoup!

Répondre

18

Dans la plupart de mes applications, j'ai une classe UIViewController personnalisée dont je dérive tous les autres contrôleurs personnalisés. Dans certains d'entre eux, j'ai ajouté une méthode comme navigationBarInitiallyHidden à la classe de base que d'autres classes peuvent remplacer. Le résultat par défaut dépend de la nature de l'application.

Dans le délégué du contrôleur de navigation, lorsqu'un contrôleur qui implémente cette méthode s'affiche, le délégué masque ou affiche le contrôleur de navigation en conséquence. Puisque j'anime la peau ou le spectacle, je vérifie l'état actuel et ne fais rien si aucun changement n'est nécessaire.

Vous pourriez faire quelque chose de plus simple dans votre méthode déléguée. Si le contrôleur affiché est le contrôleur racine, masquez la barre de navigation, sinon affichez-le s'il est masqué.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if (viewController == rootController) { 
    [navigationController setNavigationBarHidden:YES animated:animated]; 
    } else if ([navigationController isNavigationBarHidden]) { 
    [navigationController setNavigationBarHidden:NO animated:animated]; 
    } 
} 
12

Vous pouvez cacher la barre de navigation: [self.navigationController setNavigationBarHidden:YES]; et où vous voulez afficher la barre de navigation à nouveau [self.navigationController setNavigationBarHidden:NO];

5

cacher/désactiver

self.navigationController.navigationBarHidden = YES; 

afficher/Activer

self.navigationController.navigationBarHidden = NO; 
0

Vous pouvez cacher la barre de navigation en utilisant le code ci-dessous. Le code ci-dessous masquera la barre de navigation au moment de viewWillAppear.

Objectif C

-(void)viewWillAppear:(BOOL)animated 
{ 
     [[self navigationController] setNavigationBarHidden:YES animated:NO]; 
} 

Swift

self.navigationController?.setNavigationBarHidden(true, animated: animated) 
Questions connexes