Comment puis-je masquer le texte du bouton Retour d'un contrôleur UINavigation? Je n’aurai que le "<" et non le "<Back"
104
Comment puis-je masquer le texte du bouton Retour d'un contrôleur UINavigation? Je n’aurai que le "<" et non le "<Back"
Réponses:
Dans le générateur d'interface , vous pouvez sélectionner l'élément de navigation du contrôleur précédent et changer la
Back Button
chaîne en ce que vous souhaitez que le bouton de retour apparaisse. Si vous voulez qu'il soit vide, par exemple, mettez simplement un espace.Vous pouvez également le modifier avec cette ligne de code:
[self.navigationItem.backBarButtonItem setTitle:@"Title here"];
Ou dans Swift :
self.navigationItem.backBarButtonItem?.title = ""
la source
Back Button
est déjà vide dans IB, ajoutez simplement un espace pour vous déplacerBack
et affichez simplement la flèche.Vous pouvez également le faire via un storyboard. Dans l'inspecteur d'attributs de l'élément de navigation du contrôleur précédent, vous pouvez définir "" dans le champ du bouton Retour. Reportez-vous à l'image ci-dessous. Remplacez "Votre titre ici" par "". En faisant cela, vous obtiendrez le résultat souhaité. Vous n'avez plus besoin de jouer avec le «titre».
Vous pouvez utiliser par programme
[self.navigationItem.backBarButtonItem setTitle:@" "];
où self fait référence au contrôleur qui pousse le contrôleur View souhaité.
Exemple de barre de navigation avant, après
Avant
Après
la source
backBarButtonItem
programme ne fonctionne pas, mais la configuration via le storyboard fonctionne.backBarButtonItem
programmation pour moi dans iOS 9.Vous pouvez implémenter
UINavigationControllerDelegate
comme ceci:Swift plus âgé
Swift 4.x
backBarButtonItem
estnil
par défaut et affecte le prochain contrôleur poussé, donc vous le définissez simplement pour tous les contrôleursla source
Définir le titre du bouton de retour sur
@""
ounil
ne fonctionnera pas. Vous devez définir le bouton entier vide (sans titre ni image):Objectif c
Rapide
Cela devrait être fait sur le contrôleur de vue qui se trouve au-dessus de votre contrôleur de vue dans la pile de navigation (c'est-à-dire à partir de l'endroit où vous naviguez vers votre VC via la
pushViewController
méthode)la source
Une autre solution à ce problème pour les situations où vous avez beaucoup de contrôleurs de vue consiste à utiliser un
UIAppearance
proxy pour masquer efficacement le texte du titre du bouton de retour comme ceci:Cette solution rendra le texte sous la forme d'un petit point clair, similaire à la définition manuelle du titre du bouton de retour sur
@" "
, sauf qu'elle affecte tous les boutons de la barre de navigation.Je ne suggère pas cela comme une solution générale au problème, car cela affecte tous les boutons de la barre de navigation. Il renverse le paradigme afin que vous choisissiez quand afficher les titres des boutons, plutôt que quand masquer les titres.
Pour choisir quand afficher les titres, restaurez manuellement les attributs de texte de titre si nécessaire, ou créez une sous-classe spécialisée de
UIBarButtonItem
qui fait de même (potentiellement avec un autreUIAppearance
proxy).Si vous avez une application dans laquelle la plupart des titres des boutons de retour doivent être masqués et que seuls quelques-uns (ou aucun) des boutons de navigation sont des boutons système avec des titres, cela pourrait être pour vous!
(Remarque: le changement de taille de police est nécessaire même si la couleur du texte est claire afin de garantir que les titres longs ne provoquent pas le décalage du titre de la barre de navigation centrale)
la source
Ajoutez le code suivant dans viewDidLoad ou loadView
Je l'ai testé sur iPhone et iPad avec iOS 9
la source
Vous pouvez ajouter cette catégorie Objective-C pour que tous les boutons "Retour" créés par un contrôleur de navigation n'aient pas de texte. Je viens de l'ajouter à mon fichier AppDelegate.m.
PS - (je ne sais pas comment faire fonctionner cette extension avec Swift, il y avait des erreurs étranges. Modifications bienvenues pour ajouter une version Swift)
la source
override
rapidement. Question très intéressanteJ'ai essayé certains ci-dessus et ci-dessous mais ils n'ont pas fonctionné. Cela a fonctionné pour moi:
la source
La seule chose qui fonctionne sans effets secondaires est de créer un bouton de retour personnalisé. Tant que vous ne fournissez pas d'action personnalisée, même le geste de diapositive fonctionne.
Malheureusement, si vous voulez que tous les boutons de retour dans le pour n'avoir aucun titre, vous devez configurer ce bouton de retour personnalisé dans tous vos contrôleurs de vue: /
Il est très important que vous définissiez un espace comme titre et non une chaîne vide.
la source
pour supprimer le texte du bouton arrière par programme, utilisé sous Code, cela fonctionnera à partir de xcode7 et au-dessus.
self.navigationController.navigationBar.topItem.title = @ "";
ou
manualLy dans les storyboards, sélectionnez la barre de navigation sur le contrôleur de vue et mettez "" dans le texte du bouton précédent.
cela fonctionnera. Merci
la source
self.navigationController?.navigationBar.topItem?.title = " "
dans Xcode 9 et j'ai travaillé!La réponse actuelle ne fonctionnait pas. Je voulais supprimer complètement le titre , mais le texte "retour" ne disparaissait pas.
Revenez au contrôleur de vue précédent et définissez sa propriété title:
Fonctionne UNIQUEMENT lorsque le contrôleur de vue précédent n'a pas de titre
la source
@""
.Méthode alternative - utilisez la classe NavigationBar personnalisée.
Autrement dit, cela supprime tout le projet des titres. Définissez simplement une classe personnalisée pour UINavigationController.
la source
Définissez le titre du VC précédent sur une chaîne "" avec un espace. et le titre avec le bouton de retour sera remplacé par une seule chaîne d'espace.
Sur Retour, appuyez à nouveau pour réinitialiser le titre à celui d'origine dans la vue.
la source
Utilisez une personnalisation
NavigationController
qui remplacepushViewController
la source
Beaucoup de réponses déjà, voici mes deux cents sur le sujet. J'ai trouvé cette approche vraiment robuste. Il vous suffit de le mettre dans viewController avant de segue.
Swift 4:
la source
J'ai tout essayé dans ce post. La seule solution de travail est @ VoidLess
Voici la même réponse mais plus complète
la source
C'est ma résolution pour iOS11, je change l'apparence de UIBarButtonItem dans applicationDidFinishLaunchingWithOptions:
Vous ne pouvez pas modifier le décalage Y, car cela modifiera également la position du bouton de la barre arrière dans iOS11, mais c'est OK dans iOS10 et les versions antérieures.
la source
Dans Swift3,
Si vous définissez le paramètre global
la source
Swift 3.1 Vous pouvez le faire en implémentant la méthode déléguée de UINavigationController.
la source
Pour ceux qui souhaitent masquer globalement le titre du bouton précédent.
Vous pouvez SWIZZLE
viewDidLoad
deUIViewController
ce genre.Usage:
la source
Si vous ciblez iOS 13 et versions ultérieures, vous pouvez utiliser cette nouvelle API pour masquer globalement le titre du bouton Précédent .
la source
J'avais du mal avec cela parce que j'avais un contrôleur de navigation personnalisé. J'ai pu supprimer le texte de l'élément arrière dans tous les contrôleurs de vue avec ce code dans ma classe de contrôleur de navigation personnalisé
override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }
Cela supprime tous les titres des éléments arrière à l'aide de ce contrôleur de navigation personnalisé.
la source
Dans iOS 11, nous avons constaté que la définition de
UIBarButtonItem
la police / couleur du texte d'apparence sur une très petite valeur ou une couleur claire entraînerait la disparition d'un autre élément de la barre (le système n'honore plus la classe de l'élément UIBarButton, il le convertira en_UIModernBarButton
). Le réglage du décalage du texte arrière sur hors écran entraînera un flash pendant le pop interactif.Alors nous avons balancé
addSubView
:la source
la source
Le texte arrière provient du dernier View du contrôleur de vue
navigationItem.title
etnavigationItem.title
est automatiquement défini parself.title
. Un moyen si simple de résoudre le problème est le crochetsetTitle:
, assurez-vousnavigationItem.title = @""
Mettez ce code à
AppDelegate.m
ça va faire ça。Plus de détails sur https://www.jianshu.com/p/071bc50f1475(Simple Chinease)
la source
Ma solution: - XCode: 10.2.1 - Swift: 5
la source
XCode 11.5 Swift 5
Une manière très simple - bien que peut-être un peu hacky - de faire cela par programme si vous n'avez pas besoin du bouton de retour personnalisé est de définir la taille de la police égale à zéro dans le contrôleur de vue que vous poussez sur la pile, en appelant quelque chose comme ça depuis viewDidLoad
la source
Enfin trouvé la solution parfaite pour masquer le texte de retour par défaut dans toute l'application.
Ajoutez simplement une image transparente et ajoutez le code suivant dans votre AppDelegate.
la source
La méthode suivante fonctionne sur iOS 11 et est sûre de ne pas planter sur les autres versions iOS. Cela pourrait entraîner le rejet de votre application dans l'examen de l'App Store, car UIModernBarButton et UIBackButtonContainerView sont des API privées. Placez dans AppDelegate.
la source
Version Swift, fonctionne parfaitement globalement:
la source
solution
. Comme @limfinity l'a souligné, cela le changera universellement pour tous les UIBarButtonItem de l'application