Comment puis-je personnaliser le bouton de navigation arrière dans iOS 7 et supérieur sans titre? (c'est-à-dire avec la flèche uniquement)
self.navigationItem.leftBarButtonItem = self.editButtonItem;
Je me demande simplement s'ils ont des self.backButtonItem;
OU
quelque chose comme ça?
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemBACK
target:self action:@selector(back)];
Réponses:
C'est en fait assez simple, voici ce que je fais:
Objectif c
Swift 2
Swift 3
Mettez cette ligne dans le contrôleur de vue qui pousse sur la pile ( le contrôleur de vue précédent ). Le bouton de retour du contrôleur de vue nouvellement poussé affichera maintenant tout ce que vous avez mis pour initWithTitle, qui dans ce cas est une chaîne vide.
la source
prepareForSegue
dans le contrôleur de vue et cela a parfaitement fonctionné.J'ai trouvé un moyen facile de créer mon bouton de retour avec une seule flèche iOS.
Supposons que vous ayez un contrôleur de navigation allant vers ViewA depuis ViewB. Dans IB, sélectionnez la barre de navigation de ViewA, vous devriez voir ces options: Titre, invite et bouton Retour.
Options de barre de navigation
L'astuce consiste à choisir le titre du bouton de retour de votre contrôleur de vue (ViewB) dans les options du contrôleur de vue précédent (View A). Si vous ne remplissez pas l'option "Bouton Retour", iOS mettra automatiquement le titre "Retour", avec les précédents contrôleur de vue. Vous devez donc remplir cette option avec un seul espace.
Remplissez l'espace dans l'option "Bouton Retour"
Le résultat:
la source
Back Button
défini sur un espace unique ( par exemple à la fois viewA et viewB)Utilisez simplement une image!
OBJ-C :
SWIFT 4 :
Icon-Back.png
[email protected]
[email protected]
la source
navigationController?.interactivePopGestureRecognizer?.delegate = self
fait l'astuce pour garder le geste de balayage arrièreiOS7 a de nouvelles règles d'interface, il est donc préférable de conserver au moins la flèche arrière lorsque vous appuyez sur une UIView. Il est très facile de modifier le texte "arrière" par programme. Ajoutez simplement ce code avant de pousser la vue (ou prepareForSegue si vous utilisez StoryBoards):
Cela changera le texte par défaut "Retour", mais gardera la flèche de retour de style iOS7. Vous pouvez également modifier la couleur de la teinte de la flèche arrière avant de pousser la vue:
J'espère que cela vous aide!
la source
Vous n'avez rien à faire. Vous pouvez obtenir le même résultat grâce au storyboard lui-même.
Allez simplement sur le contrôleur de navigation racine et donnez un espace. N'oubliez pas non pas au contrôleur que vous vouliez le bouton de retour sans titre, mais au contrôleur de navigation racine.
la source
Bien que la réponse de Kyle Begeman fasse totalement l'affaire, il est assez ennuyeux d'avoir ce code dans tous les contrôleurs de vue possibles. Je me suis retrouvé avec une
UINavigationItem
catégorie simple . Attention, voici des dragons! Désolé, je veux dire, tourbillonnant:la source
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault];
( source ) - pourrait être un peu moins élégant, mais le swizzling ressemblait à une surpuissanceUINavigationItem
très propre, il n'y a pas d'héritage impliqué. Et il_cmd
est très peu probable d'être impliqué dans un getter. Quoi qu'il en soit, c'est un bon point. Alors, si vous avez l'un de ces nombreux assistants accélérés dans votre projet, assurez-vous de l'utiliser également ici.EDIT: 2014-04-09: Comme j'ai acquis une réputation, je suis désolé car je n'utilise plus cette astuce. Je recommande la réponse de Kyle. Notez également que le
self
ofself.navigationItem.backBarButtonItem
n'est pas le contrôleur de vue, le bouton de retour est affiché, mais que le contrôleur de vue précédent doit revenir.Si vous n'avez pas besoin d'avoir le texte du titre pour le contrôleur de vue précédent, remplissez simplement le titre avec une chaîne vide;
Cela empêchera d'afficher "en arrière" avec un chevron sur le contrôleur de vue poussé.
EDIT: Même si vous utilisez un texte de titre non vierge, le réglage du titre du contrôleur de vue précédent
viewWillAppear:
fonctionne, sauf que le titre peut clignoter en un clin d'œil lorsque le contrôleur de vue est apparu. Je pense que "l'application Twitter" semble faire un hack plus subtil pour éviter le scintillement.la source
Cela fonctionne, mais il supprimera le titre de l'élément précédent, même si vous y revenez:
Définissez simplement cette propriété sur
viewDidLoad
le View Controller poussé.la source
viewWillAppear
afin qu'il soit toujours correctement réglé.C'est ainsi que je le fais et le plus simple, le plus efficace et le plus clair.
Cela fonctionne si intégré
Navigation Controller
Swift 3
Dans
viewDidLoad
j'ajoute cela au contrôleur de vue, vous voulez que le bouton de retour soit juste une flèche.La différence avec la réponse de @Kyle Begeman est que vous appelez cela sur le contrôleur de vue que vous voulez que le bouton de retour soit juste une flèche, pas sur le contrôleur de vue de pile.
la source
Vous n'avez pas accès à la navigation backButtonItem comme vous le souhaitez, vous devez créer votre propre bouton de retour comme ci-dessous:
Et bien sûr:
la source
Objectif: personnaliser tous les boutons de retour sur
UINavigationBar
une icône blancheÉtapes: 1. dans la méthode "didFinishLaunchingWithOptions" d'AppDelete:
2. dans la
viewDidLoad
méthode de la superViewController
classe commune:la source
SWIFT 4
Pour ceux qui cherchent à créer des boutons arrière personnalisés et à supprimer leur titre, veuillez utiliser le morceau de code suivant dans le contrôleur de vue qui pousse le nouveau:
Pour une utilisation plus universelle, procédez comme suit:
Créez une fonction universelle comme suit:
Ensuite, utilisez-le dans les contrôleurs de vue comme suit:
la source
Le piratage simple d'iOS6 fonctionne également sur iOS7:
Edit: N'utilisez pas ce hack. Voir le commentaire pour plus de détails.
la source
vous pouvez l'utiliser. Cela fonctionne parfaitement pour moi en ajoutant simplement
UIButton
une vue personnalisée pour leUIBarButtonItem
.Essayez le code ci-dessous
la source
Créez un
UILabel
avec le titre que vous souhaitez pour votre contrôleur de vue racine et affectez-le au contrôleur de vuenavigationItem.titleView
.Maintenant, définissez le titre sur une chaîne vide et le prochain contrôleur de vue que vous appuyez aura un bouton de retour sans texte.
la source
la source
Toutes les réponses ne résolvent pas le problème. Il n'est pas acceptable de reculer le titre du bouton dans chaque contrôleur de vue et l'ajout d'un décalage au titre fait toujours passer le titre du contrôleur de vue vers la droite.
Voici la méthode utilisant la méthode swizzling, il suffit de créer une nouvelle extension pour UINavigationItem
la source
J'ai appliqué le code suivant dans viewDidLoad et cela fonctionne:
Juste pour mettre à jour, j'utilise Vector Icon
la source
Vous pouvez sous-classer UINavigationController, se définir en tant que délégué et définir le backBarButtonItem dans la méthode déléguée
navigationController:willShowViewController:animated:
la source
Reculer le titre vide
Changer l'image de retour
la source
J'utilise cette solution depuis iOS 5 environ sans aucun problème. J'ai créé une fonction utilitaire que j'appelle dans mes contrôleurs de vue. Vous devez le faire dans viewDidLoad ou à tout moment après cela.
Dans certains cas, l'élément de navigation peut déjà exister, dans d'autres cas, il doit être créé. Cela représente ces deux cas sans jouer avec le titre de l'élément de navigation. Il vous permet de supprimer le titre en passant simplement
@""
.la source
La seule façon qui a fonctionné pour moi était:
METTRE À JOUR:
Lorsque j'ai changé le drapeau d'animation de séquence en true (c'était faux auparavant), la seule façon qui fonctionnait pour moi était:
la source
Si vous avez deux ViewController (FirstVC, SecondVC) Embed dans le contrôleur de navigation et que vous voulez qu'il n'y ait qu'une flèche de retour dans SecondVC.
Vous pouvez essayer ceci dans le ViewDidLoad de FirstVC
Ensuite, lorsque vous poussez dans SecondVC, vous verrez la seule flèche de retour
la source
Si vous définissez tintColor Of NavigationBar, ajoutez une image de bouton de retour personnalisé sans titre, cette couleur de teinte reflétera la couleur de l'image. Veuillez suivre ce lien de documentation d'Apple.
https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/index.html#//apple_ref/doc/uid/TP40012857-UIView-SW7
la source
Vérifiez cette réponse
Comment changer le nom du bouton de retour UINavigationController?
définir le
title
textestring
avec un espace vide comme ci-dessousN'ont pas assez de réputation pour ajouter des commentaires :)
la source
J'ai écrit une extension pour rendre cela plus facile:
la source
Vous pouvez changer le titre en @ "" du ViewController actuel sur viewWillDisappear, et quand il est sur le point d'afficher à nouveau, redéfinissez le titre sur ce qu'il était auparavant.
la source
Dans la méthode prepareForSegue: de votre premier ViewController, vous définissez le titre de ces vues sur @ "", donc lorsque la prochaine vue est poussée, elle affichera le titre précédent de ViewController qui sera @ "".
Le seul problème avec cela est que lorsque vous appuyez sur le bouton de retour, votre vue précédente n'aura pas de titre, vous pouvez donc l'ajouter à nouveau sur viewWillAppear:
Je n'aime pas beaucoup cette solution mais elle fonctionne et je n'ai pas trouvé d'autre moyen de la faire.
la source
Pour ajouter à la réponse de Thomas C ci-dessus, mettre parfois un seul espace ne fonctionne pas et vous devez continuer à ajouter des espaces.
Vous saurez que vous avez réussi lorsque vous verrez «Bar Button Item -» sous «Navigation Item». C'est dans le plan du document (Editeur-> Afficher le plan du document). Une fois que vous voyez l'image ci-dessus, vous pouvez supprimer quelques espaces et voir si cela fonctionne toujours.
la source
Tout comme Kyle Begeman, vous ajoutez le code ci-dessus à votre contrôleur de vue racine. Tout le contrôleur de sous-vue sera appliqué. De plus, en ajoutant ceci dans la méthode initWithCoder:, vous pouvez appliquer le style pour les contrôleurs de vue racine dans les approches basées sur xib, storyboard ou code.
la source