Question

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 retour?

Était-ce utile?

La solution

Objective-C:
     self.navigationItem.hidesBackButton = YES;

Swift:
     navigationItem.hidesBackButton = true

Autres conseils

Le meilleur moyen est de les combiner pour masquer le bouton Précédent même si vous le configurez manuellement:

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

bouton de masquage arrière avec le code ci-dessous ...

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

ou

[self.navigationItem setHidesBackButton:YES];

De même, si vous avez personnalisé UINavigationBar , essayez le code ci-dessous

self.navigationItem.leftBarButtonItem = nil;

Utilisez le code:

 self.navigationItem.backBarButtonItem=nil;

Dans 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'objet doté du contrôleur de navigation. Par exemple, si un contrôleur de navigation pousse un contrôleur avec un RootViewController sur la barre d'onglets, l'appel de self.navigationItem.hidesBackButton = YES sur le RootViewController ne fera rien. Vous devrez en fait appeler self.tabBarController.navigationItem.hidesBackButton = YES

N'oubliez pas que nous avons maintenant le geste de glisser vers l'arrière. Vous voulez probablement supprimer cela 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 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 éléments de menu et, pour une raison quelconque, l'onglet "backButton". est visible lors du débogage visuel de la hiérarchie des vues et mon icône menuItem s’affiche sous l’invisible "bouton Précédent".

J'ai essayé les paramètres, comme suggéré dans les 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 s'est bien passé. 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.

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 fonctionnait pas pour moi dans tous les cas quand je mets

self.navigationItem.hidesBackButton = YES;

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

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top