web-dev-qa-db-fra.com

Comment masquer le bouton "Retour" 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 vues ne devraient pas avoir le bouton "Retour" (le titre précédent). Des idées sur la façon de cacher le bouton de retour?

306
Chilly Zhong

Objectif c:
self.navigationItem.hidesBackButton = YES;

Rapide:
navigationItem.hidesBackButton = true

786
user8170

La meilleure façon de les combiner est de masquer le bouton Précédent même si vous le configurez manuellement: 

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

cacher le bouton avec le code ci-dessous ...

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

ou  

[self.navigationItem setHidesBackButton:YES];

De plus, si vous avez personnalisé UINavigationBar, essayez le code ci-dessous.

self.navigationItem.leftBarButtonItem = nil;
18
Paras Joshi

Dans Swift

Ajoutez ceci au contrôleur  

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

Utilisez le code:

 self.navigationItem.backBarButtonItem=nil;
5
Gurpreet Singh

Dans la fonction viewDidLoad de UIViewController, utilisez le code:

self.navigationItem.hidesBackButton = YES;
3
indiefr

N'oubliez pas que vous devez l'appeler sur l'objet doté du contrôleur de navigation. Par exemple, si un contrôleur de navigation pousse un contrôleur de barre de tabulation avec un RootViewController, appeler self.navigationItem.hidesBackButton = YES sur le RootViewController ne fera rien. Vous devriez en fait appeler self.tabBarController.navigationItem.hidesBackButton = YES

2
Tyler

N'oubliez pas que nous avons la diapositive pour revenir en arrière maintenant. Vous voudrez probablement aussi enlever ceci. 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;
}
2
Bruno Delgado

Ajouter 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;
1
Bhavsar1311

Cela ne fonctionnait pas pour moi dans tous les cas quand je mets 

self.navigationItem.hidesBackButton = YES;

in viewWillAppear ou ViewDidLoad, mais a parfaitement fonctionné lorsque je l'ai défini dans init du viewController. 

1
Joe M

Pour moi, rien de ce qui précède ne semblait fonctionner. Cela n'avait aucun effet visuel. J'utilise des storyboards avec une vue "intégrée" dans un contrôleur de navigation.

Au niveau du code, j’ajoute mes menuItems 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 hook et cela n'a eu aucun effet. Ensuite, j'ai essayé une approche plus brutale et une itération sur la sous-vue, qui n'a également eu aucun effet.

J'ai inspecté la taille de mes icônes et tout semblait aller pour le mieux .. Après avoir fait référence à la directive d'interface humaine Apple, j'ai confirmé que mes icônes étaient correctes. (1 pixel plus petit dans mon cas 24px 48px 72px).

La partie la plus étrange est alors la solution réelle ...

Lors de l'ajout de l'élément BarButton, attribuez-lui un titre avec au moins un caractère , Dans mon cas, un caractère d'espacement.

J'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];
1
Wayne

essayez celui-ci - self.navigationController?.navigationItem.hidesBackButton = true

0
Ahil Rahesh

Dans c # ou Xamarin.ios, this.NavigationItem.HidesBackButton = true;

0