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?
Objectif c:self.navigationItem.hidesBackButton = YES;
Rapide:navigationItem.hidesBackButton = true
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;
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;
Dans Swift:
Ajoutez ceci au contrôleur
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
Utilisez le code:
self.navigationItem.backBarButtonItem=nil;
Dans la fonction viewDidLoad de UIViewController, utilisez le code:
self.navigationItem.hidesBackButton = YES;
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
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;
}
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;
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.
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];
essayez celui-ci - self.navigationController?.navigationItem.hidesBackButton = true
Dans c # ou Xamarin.ios, this.NavigationItem.HidesBackButton = true;