Je souhaite supprimer le texte du bouton de retour, mais je souhaite conserver l'icône. j'ai essayé
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
Cependant, cela supprime complètement le texte et l'icône.
Je sais que cela a déjà une réponse, mais vous pouvez également le faire dans le code (au cas où vous travaillez avec des plumes)
Ajoutez ce qui précède dans le premier contrôleur de vue.
Notez que vous devez le faire pour chaque contrôleur de vue qui pousse. Donc, si vous avez 3 contrôleurs de vue et que vous souhaitez supprimer le texte arrière de tous, vous devrez ajouter la ligne dans les contrôleurs de vue 1 et 2.
la source
.Plain
a été changé en.plain
. Pas de capital p.Après avoir beaucoup recherché, j'ai trouvé la solution la meilleure et la plus simple, cela affectera tous les viewControllers écrits dans Swift 4.2 et fonctionnant également dans Swift 5
la source
Le texte du bouton de retour dépend du titre de la vue principale.
L'astuce consiste à effacer le titre si la vue principale disparaît et à le redéfinir s'il est à nouveau affiché:
la source
Si vous voulez supprimer le titre d'un bouton de retour d'un contrôleur de vue poussé, disons
<Settings
à<
en subSettingsViewController alors vous avez à mettre backBarButtonItem titre dans SettingsViewController de viewWillDisappear () méthode.Objectif c:
Rapide:
la source
.Plain
a été changé en.plain
. Pas de capital p.Si vous voulez une flèche de retour, le code suivant est mis dans le fichier AppDelegate dans la méthode didFinishLaunchingWithOptions.
Pour Swift
la source
Dans mon cas, pour l'icône et le titre personnalisés, cela a fait l'affaire (Swift 4)
la source
J'ai résolu ce problème en ajoutant un "" sur le titre StoryBoard du ViewController précédent. Juste un espace, pas vide; D
la source
Enfin trouvé la solution parfaite.
Ajoutez simplement une image transparente et ajoutez le code suivant dans votre AppDelegate.
la source
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment
hack recommandé par la plupart des autres réponses, mais il était cassé sur l'iPhone X pour les contrôleurs de vue avec de longs titres. Cette solution fonctionne parfaitement.dans swift 4
la source
Pour Swift 4+ mettre ces lignes dans
AppDelegate
audidFinishLaunchingWithOptions
la source
Cela fonctionne pour moi
la source
Si vous avez un ViewControllerA et que vous souhaitez accéder au ViewControllerB, dans le ViewControllerA, vous devez définir le navigationItem actuel avec un nouvel UIBarButtonItem et le titre sur une chaîne avec un espace vide avant de pousser vers un autre contrôleur de vue:
Définissez le titre sur une chaîne avec un espace vide, vous ne pouvez pas définir nil ou "" (chaîne vide) car la valeur par défaut est nil
la source
Mettez ce code dans chaque VC qui en pousse un autre
la source
la source
Pour supprimer de tous les contrôleurs de vue dans une pile de contrôleurs de navigation:
sous-classe UINavigationController et ajoutez ceci:
la source
Parfois, cela ne fonctionne pas pour changer uniquement la couleur du titre, au cas où le titre serait long. Parce que cela pourrait déplacer le titre de la barre de navigation vers la gauche. Donc, pour éviter cela, vous devrez peut-être déplacer le titre du bouton de la barre horizontalement en plus de le rendre transparent:
la source
Détails
Solution
1. Créez une classe personnalisée de UINavigationController
2. Ajoutez l'extension UIViewController
3. Mettez à jour votre classe ViewController
Échantillon complet
Résultat
la source
Pour moi, cela a fait l'affaire:
Notez que si vous définissez uniquement le titre sans modifier le backBarButtonItem, il semblera fonctionner. Mais si vous essayez de revenir en arrière en utilisant un geste et d' annuler et de rester sur le contrôleur de vue poussée, le titre arrière reviendra.
Travailler dans Swift 4
la source
Vous devez sélectionner la barre de navigation du contrôleur à partir de laquelle le bouton de retour pointera et tapez "" dans le champ Bouton de retour.
Par exemple, si vous poussez le contrôleur A vers le contrôleur B, placez un espace dans la barre de navigation du contrôleur A.
la source
Xcode 10, Swift 4+
Réponse similaire aux autres ici mais il est à noter que si le texte n'est toujours pas effacé, vous devez cliquer sur Espace puis sur Entrée.
la source
Une alternative pour remplacer tout
ViewControllers
pour moi était d'étendreUINavigationController
et de définirbackBarButtonItem
letopViewController
.Swift 5
sur Xcode 11.2.1:la source
Le moyen le plus simple de le faire par programme consiste à définir à
backBarButtonItem
partir du contrôleur de vue parent (un contrôleur qui appelle push).Plus de détails ici https://sarunw.com/posts/how-to-remove-text-from-uinavigationbar-back-button/
la source
Vous pouvez supprimer le texte du bouton Précédent à l'aide d'une méthode déléguée de
UINavigationController
.la source
Dans Xcode 9.2 avec Swift, cela fonctionnait comme ceci:
la source
Dans le cas où nous ne contrôlons pas du tout le contrôleur de vue précédent (c'est-à-dire si nous travaillons dans un framework), nous pouvons supprimer le titre du bouton de retour comme suit:
Ce qu'il fait est de naviguer jusqu'au dernier élément de la pile de navigation et de supprimer son titre arrière. Assurez-vous de sauvegarder l'original lorsque notre contrôleur de vue apparaîtra:
puis réaffectez-le, afin de ne perturber aucune partie de l'application:
la source
Cela résoudra votre problème:
la source
J'ai essayé quelques réponses et je ne peux pas les faire fonctionner dans tous les cas. Il s'agit donc d'une solution de contournement pour ne pas affecter le titre de la barre de navigation s'il est défini.
la source
La méthode de programmation simple, sans effets secondaires indésirables, consiste à initialiser le navigationItem.backBarButtonItem avec un élément vide dans la méthode awakeFromNib du contrôleur source (celui à partir duquel vous naviguez):
Remarque: si vous initialisiez le bouton de retour plus tard, comme dans la méthode viewDidLoad () , vous perdriez le balayage arrière fonctionnalité de (glisser du bord gauche vers la droite vous ramènera un pas en arrière dans la pile de navigation).
Ensuite, si vous voulez différents textes de bouton de retour pour différents contrôleurs de destination et si vous utilisez des segues, vous pouvez définir le titre dans la méthode prepare (for segue :, sender :) , comme ceci:
la source