Comment masquer le bouton ‘Back’ sur la barre de navigation sur iPhone?

J’ai ajouté un contrôle de navigation pour basculer entre les vues de mon application. Mais certaines des vues ne devraient pas avoir le bouton ‘Retour’ (le titre précédent). Des idées sur la façon de masquer le bouton de retour?

Objectif c:
self.navigationItem.hidesBackButton = YES;

Rapide:
navigationItem.hidesBackButton = true

Le meilleur moyen est de les combiner afin de masquer le bouton retour même si vous le configurez manuellement:

 self.navigationItem.leftBarButtonItem=nil; self.navigationItem.hidesBackButton=YES; 

bouton cacher avec le code ci-dessous …

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

ou

 [self.navigationItem setHidesBackButton:YES]; 

Aussi, si vous avez personnalisé UINavigationBar essayez le code ci-dessous

 self.navigationItem.leftBarButtonItem = nil; 

Utilisez le code:

  self.navigationItem.backBarButtonItem=nil; 

En Swift :

Ajoutez ceci au contrôleur

 override func viewDidLoad() { super.viewDidLoad() self.navigationItem.setHidesBackButton(true, animated: false) } 

Dans la fonction viewDidLoad de UIViewController, utilisez le code:

 self.navigationItem.hidesBackButton = YES; 

N’oubliez pas que vous devez l’appeler sur l’object qui possède le contrôleur de navigation. Par exemple, si vous avez un contrôleur de navigation poussant sur un contrôleur de barre d’tabs avec un RootViewController, l’appel de self.navigationItem.hidesBackButton = YES sur RootViewController ne fera rien. Vous devrez en fait appeler self.tabBarController.navigationItem.hidesBackButton = YES

N’oubliez pas que nous avons maintenant le geste de la diapositive. Vous voulez probablement supprimer ceci aussi. N’oubliez pas de le réactiver si nécessaire.

 if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) { self.navigationItem.hidesBackButton = YES; } if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } 

Ajoutez ce code dans votre contrôleur de vue

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

Pour moi, rien de tout cela ne semblait fonctionner, cela n’avait aucun effet visuel. J’utilise des storyboards avec une vue qui est “incorporée” dans un contrôleur de navigation.

Au niveau du code, j’ajoute alors mes menusItems et pour une raison quelconque le “backButton” est visible lors du débogage visuel de la hiérarchie des vues, et mon icône menuItem est affichée sous le “bouton retour” invisible.

J’ai essayé les réglages, comme suggéré aux différentes méthodes de crochet et cela n’a eu aucun effet. Ensuite, j’ai essayé une approche plus brutale et j’ai parcouru la sous-vue qui n’avait pas non plus d’effet.

J’ai inspecté mes tailles d’icons et semblait bien aller. Après avoir consulté le manuel d’utilisation de l’interface homme-pomme, j’ai confirmé que mes icons étaient correctes. (1 pixel plus petit dans mon cas 24px 48px 72px).

La partie la plus étrange est alors la correction réelle …

Lorsque vous ajoutez l’élément BarButton, donnez-lui un titre avec au moins un caractère , dans mon cas un espace.

Espère que cela aide quelqu’un.

 //left menu - the title must have a space UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX style:UIBarButtonItemStylePlain target:self action:@selector(showMenu)]; leftButtonItem.image = [UIImage imageNamed:@"ic_menu"]; [self.navigationItem setLeftBarButtonItem:leftButtonItem]; 

Cela ne marchait pas pour moi dans tous les cas quand je fixais

self.navigationItem.hidesBackButton = YES;

dans viewWillAppear ou ViewDidLoad, mais a parfaitement fonctionné lorsque je l’ai défini dans init de viewController.