162 votes

Comment masquer le bouton "retour" dans UINavigationController ?

Savez-vous comment masquer le bouton "retour" dans un UINavigationController ? Et aussi comment le faire réapparaître, mais je suppose que c'est très similaire au fait de le cacher...

Comme le fait l'application de messagerie de l'iPhone lorsque vous cliquez sur "Modifier" pendant la consultation des messages électroniques.

322voto

Zoran Simic Points 5694

Je viens de trouver la réponse, dans un contrôleur utiliser ceci :

[self.navigationItem setHidesBackButton:YES animated:YES];

Et pour le restaurer :

[self.navigationItem setHidesBackButton:NO animated:YES];

--

[MISE À JOUR]

Swift 3.0 :

self.navigationItem.setHidesBackButton(true, animated:true)

20 votes

Apprenez aussi de mon erreur : vous devez appeler setHidesBackButton: AVANT de pousser le navigationItem dans le navigationController.

0 votes

Pourquoi avant ? Et si vous voulez pousser un viewController et ensuite cacher le bouton retour pour empêcher l'utilisateur de revenir en arrière ?

1 votes

@codingFriend - Je trouve que cela fonctionne également si vous mettez le setHidesBackButton dans le gestionnaire de message viewDidAppear de la vue sur laquelle vous ne voulez pas montrer le bouton arrière.

27voto

jitendra Points 313

Ajouter ce code

[self.navigationItem setHidesBackButton:YES];

22voto

mattv123 Points 291

Outre la suppression du bouton "retour" (à l'aide des méthodes déjà recommandées), n'oubliez pas que l'utilisateur peut toujours revenir à l'écran précédent par un glissement de gauche à droite dans iOS 7 et les versions ultérieures.

Pour désactiver cela (le cas échéant), implémentez ce qui suit (dans viewDidLoad par exemple) :

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
     self.navigationController.interactivePopGestureRecognizer.enabled = NO;

1 votes

Matt - +1 pour vous. Merci d'avoir ajouté cette note. Très utile. Pour ceux qui se demandent comment fonctionne le geste pop, il suffit de glisser de gauche à droite sur votre barre de navigation pour recréer ce que Matt décrit ici. L'ajout du code ci-dessus empêche l'utilisateur de faire ce geste sur le contrôleur de vue où il est inclus.

16voto

Sandy Points 412

Pour masquer et afficher le bouton Retour de manière conditionnelle, vous pouvez utiliser le code suivant :

-(void)viewDidAppear:(BOOL)animated
{
    if ([tempAry count]==0)
    {
        [self.navigationItem setHidesBackButton:YES animated:YES];
    }
    else
    {
        [self.navigationItem setHidesBackButton:NO animated:YES];
    }
    [super viewDidAppear:animated];
} 

Note : dans certains cas, vous devez le mettre dans la méthode viewDidAppear au lieu de viewWillAppear. par exemple, lorsque vous mettez à jour le tableau de la classe suivante dans la classe précédente et que vous vérifiez ensuite la condition dans la classe suivante comme ci-dessus.

10voto

M.Othman Points 824

Le bouton "sethidesback" n'a pas fonctionné pour moi pour une raison quelconque.

J'ai utilisé cette méthode ->

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc]initWithFrame:CGRectMake(0, 0, 20, 30)]] ;

0 votes

Merci J'ai eu le même problème où setHidesBackButton:YES n'a pas fonctionné mais cette solution a fonctionné pour iOS 7.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X