web-dev-qa-db-fra.com

iOS comment supprimer le bouton de retour?

J'ai une application avec une barre de navigation qui permet d'accéder à un contrôleur d'affichage de l'écran de connexion, puis à un menu principal. Existe-t-il un moyen de supprimer le bouton de retour du menu principal pour empêcher l'utilisateur de revenir à l'écran de connexion? 

Merci!

EDIT: Utiliser Xcode 4.3 et effectuer tout le travail de programmation par programme.

47
jbearden

Tu peux faire:

[self.navigationItem setHidesBackButton:YES];

Dans votre deuxième contrôleur de vue (celui dans lequel vous souhaitez masquer le bouton).

115
Peter Sarnowski

La réponse de Peters est correcte, bien que je pense que la meilleure question est de savoir pourquoi. Dans un schéma comme le vôtre où vous souhaitez connecter un utilisateur, au lieu d'utiliser un VC poussé, présentez un Modal VC et utilisez une méthode déléguée pour récupérer les informations sur l'utilisateur obtenues lors du processus de connexion. Je peux poster un exemple de code complet si vous en avez besoin, mais il semble que vous ayez réglé les détails de votre processus de connexion. Il suffit d'utiliser:

presentModalViewController

au lieu de:

pushViewController

De cette façon, vous n'avez pas à vous soucier de la pile de navigation et à faire quelque chose qui n'est pas vraiment conforme aux instructions de l'interface utilisateur.

9
LJ Wilson

Le code ci-dessus n'a pas fonctionné pour moi. Comme suggéré dans UINavigationItem setHidesBackButton: OUI n'empêchera pas le retour , Je devais utiliser:

[self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]]];
5
Yoga

En rapide

self.navigationItem.hidesBackButton = true
4
Hamzah Malik

Essayé dans Xcode7.3.1, Swift

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

Il ne fait que masquer la flèche de retour et désactiver l'action de retour, mais je peux toujours voir le nom du contrôleur de vue précédent. 

Pour ceux qui souhaitent également masquer le nom du contrôleur de vue précédent, essayez la réponse de Yoga fonctionne pour moi. En rapide 

self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIView())
1
Codingpan

Essaye ça:

[self.navigationItem setHidesBackButton:YES];

Ou

[self.navigationItem setHidesBackButton:YES animated:YES];
1
Flaviano Gomes