Ce que je voulais faire, c'est supprimer le texte du bouton «Retour» d'un UIBarButtonItem
, en ne laissant que le chevron bleu sur la barre de navigation. Gardez à l'esprit que je développe pour iOS 7. J'ai essayé plusieurs méthodes, y compris, mais sans s'y limiter:
Ceci est la méthode d'image que je n'ai pas aimé (l'image semblait hors de propos):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Une autre méthode que j'ai essayée est celle-ci, qui n'a tout simplement pas fonctionné (rien ne s'est affiché):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
Ce que je voulais réaliser, c'est quelque chose comme les boutons de retour trouvés dans l'application iOS 7 Music, qui ne comportaient qu'un seul chevron.
Merci.
Réponses:
Ensuite, vous pouvez supprimer le titre de l'élément du bouton Précédent.
Si vous utilisez Storyboard, vous pouvez définir le bouton Précédent de l'inspecteur des attributs de navigation avec de l'espace.
la source
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
UIControlStateHighlighted
ainsiPour définir le titre du bouton de retour d'un contrôleur de vue sans modifier son titre, utilisez:
Objectif c:
Rapide:
Pour être clair, cela se fait sur le contrôleur de vue que vous verriez si vous appuyez sur le bouton de retour. c'est-à-dire qu'au lieu de voir '<Paramètres' vous voulez juste voir '<' alors sur votre SettingsViewController vous mettriez ceci dans votre
init
. Ensuite, vous n'obtenez aucun des problèmes du titre qui n'apparaît pas lorsque vous regardez le contrôleur de vue lui-même.la source
Si vous utilisez des storyboards, vous pouvez accéder au
Attributes Inspector
ViewControllerNavigation Item
(cliquez surNavigation Bar
) et définir laBack Button
propriété sur "" (un espace). Cela définira le titre du bouton Précédent sur un caractère d'espace, laissant le chevron visible. Pas besoin de jouer avec le code.Notez que cela définira le
Back Button
titre du bouton Précédent qui se connectera à ce contrôleur de vue à partir de celui qui a été poussé dessus, et nonBack Button
celui qui sera affiché à l'intérieur de ce contrôleur!la source
Cela fonctionne pour moi d'afficher uniquement le chevron `` arrière '' sans aucun texte:
Définissez cette propriété dans
viewDidLoad
le contrôleur de vue présentant la barre de navigation et cela fera l'affaire.Remarque: je ne l'ai testé que sur iOS 7, ce qui est dans le cadre de la question.
la source
-viewDidLoad
le VC que je ne veux pas le texte arrière. Cependant, ce que j'ai découvert plus tard, c'est que lorsque j'éclate le 2e VC dunavigationController
texte du titre apparaît peu de temps après, pas immédiatement. Je suppose qu'une vidéo illustrerait mieux cela alors la voici: lienLorsque vous définissez le titre du bouton, utilisez @ "" au lieu de @ "".
--ÉDITER--
Est-ce que quelque chose change lorsque vous essayez d'autres cordes? J'utilise moi-même le code suivant avec succès:
backString est une variable définie sur @ "" ou @ "Back", selon que je suis sur iOS 7 ou une version inférieure.
Une chose à noter est que ce code n'est pas dans le contrôleur de la page pour laquelle je souhaite personnaliser le bouton de retour. C'est en fait dans le contrôleur avant lui sur la pile de navigation.
la source
setLeftBarButtonItem:backButton
place, rien ne serait là.Parfois, il est utile de voir les choses dans leur contexte. Voici un projet minimal qui cache le texte "arrière" mais montre toujours la flèche.
Storyboard
Il y a une séquence d'émission du bouton "Afficher le deuxième contrôleur de vue" au deuxième contrôleur de vue.
J'ai également ajouté un élément de navigation au deuxième contrôleur de vue afin qu'il ait un titre. C'est facultatif. Cela n'affecte pas le bouton de retour.
Code
FirstViewController.swift
SecondViewController.swift
Méthode alternative (IB uniquement, pas de code)
Sur le storyboard, sélectionnez l'élément de navigation pour le premier contrôleur de vue (pas le second). Entrez simplement un espace pour le texte du bouton Retour.
la source
la source
Sur iOS7, Apple a introduit deux nouvelles propriétés dans UINavigationBar, «backIndicatorTransitionMaskImage» et «backIndicatorImage».
En appelant simplement une fois:
Il rendra une image personnalisée au lieu du glyphe chevron par défaut, héritant de la couleur de teinte de keyWindow.
Et pour supprimer le titre, je proposerai la réponse de Kamaros. N'oubliez pas d'appeler ce code sur le contrôleur de vue qui pousse votre nouveau contrôleur de vue. Suppression du texte de titre d'un UIBarButtonItem iOS
la source
Je n'ai pas eu beaucoup de succès avec les réponses fournies mais j'ai trouvé un travail vraiment simple. Dans votre storyboard, vous pouvez cliquer sur l'élément de navigation de votre UIViewController et définir le texte du bouton de retour. Je l'ai placé dans un seul espace et cela m'a donné le comportement que je recherchais.
la source
Cela a fonctionné pour moi dans iOS10. Appelez cela à partir de viewDidLoad du contrôleur de vue.
la source
Une solution simple à ce problème, fonctionnant sur iOS7 ainsi que sur 6, consiste à définir une vue de titre personnalisée dans viewDidLoad:
Ensuite, dans viewWillAppear: vous pouvez appeler en toute sécurité
Étant donné que votre vue de titre est une vue personnalisée, elle ne sera pas remplacée lors du retour dans la pile de navigation.
la source
[self.navigationItem.backBarButtonItem setTitle:@" "];
dans viewWillAppear mais il ne fonctionnait pas sur les vues présentées après avoir rejeté une vue modale.En fait, vous pouvez le faire avec une seule astuce:
Remplacez la
UINavigationBar
classe et ajoutez cette ligne de code:Ensuite, initialisez votre
UINavigationController
avec cette classe UINavigationBar personnalisée .. etc.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
J'espère que cela t'aides
la source
J'ai pu bricoler quelque chose ensemble en utilisant la réponse de DonnaLea. Voici comment la solution apparaît dans ma sous-classe UIViewController:
Le problème avec la réponse d'origine est qu'elle supprime le titre du contrôleur lorsque vous y revenez. Tenter de réinitialiser le titre dans viewWillDisappear est trop tard dans le processus de transition; Cela provoque le retour du titre au lieu de bien s'animer. Cependant, le willMoveToParentViewController se produit plus tôt et permet le comportement correct.
Avertissement: je n'ai testé cela qu'avec un push / pop UINavigationController normal. Il peut y avoir un comportement inattendu supplémentaire dans d'autres situations.
la source
Dans la méthode prepareForSegue: de votre premier ViewController, vous définissez le titre de cette vue 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
SWIFT 3
la source
Aucune des réponses ne m'a aidé. Mais une astuce a été faite - je viens d'effacer le titre du contrôleur de vue qui a poussé (là où le bouton retour va) juste avant de le pousser.
Ainsi, lorsque la vue précédente n'a pas de titre, sur iOS 7, le bouton de retour n'aura qu'une flèche, sans texte.
Sur
viewWillAppear
la vue de poussée, j'ai remis le titre original.la source
J'avais un même problème et je l'ai fait de cette façon.
--ÉDITER--
c'est une solution lorsque vous voulez vraiment supprimer le texte du titre de tous les UIBarbuttonItem. Si vous souhaitez uniquement supprimer le titre de l'élément de bouton de la barre arrière, il n'y a pas de solution simple et pratique. Dans mon cas, comme je n'ai que quelques UIBarButtonItems qui ont besoin d'afficher le texte du titre, je viens de changer le titre de ces boutons spécifiques titleTextAttributes. Si vous voulez être plus précis, utilisez le code ci-dessous, qui ne changera que les boutons de la barre de navigation:
la source
UIControlStateHighlighted
etCette utilisation de la sous-classe
navigationController
supprime le "Retour".J'utilise cela pour le supprimer, de manière permanente via l'application.
la source
la source
Masquer le bouton Retour Titre de la barre de navigation
la source
Voici ce que je fais de moi, qui est plus simple pour supprimer le titre du bouton retour
la source
Swift 3.1 Vous pouvez le faire en implémentant la méthode déléguée de UINavigationController. Cela masquera le titre avec le bouton de retour uniquement, nous aurons toujours l'image de la flèche de retour et la fonctionnalité par défaut.
la source
Vous pouvez également utiliser ceci:
Ça marche pour moi
la source
la source
Solution parfaite à l'échelle mondiale
la source
Je crée une classe personnalisée pour
UINavigationController
et l'applique à tous les contrôleurs de navigation de mon application. À l'intérieur de cetteUINavigationController
classe personnalisée , j'ai défini leUINavigationBar
déléguéself
une fois la vue chargée .Ensuite, j'implémente la méthode déléguée:
De cette façon, j'assigne simplement ma classe personnalisée à tous mes contrôleurs de navigation et il efface le titre de tous les boutons de retour. Et pour plus de clarté, j'ai toujours défini le titre de tous mes autres contrôleurs de vue à l'intérieur
viewWillAppear
afin que le titre soit toujours mis à jour juste avant que la vue n'apparaisse (au cas où il serait supprimé par des astuces comme celle-ci).la source
Il suffit de saisir un seul espace pour l'élément de navigation du bouton Retour fonctionne !!
la source
Si, comme moi, vous utilisez une vue personnalisée au lieu de
UINavigationBar
et que vous êtes coincé avec le bouton de retour, vous devez faire un peu de travail qui semble un peu maladroit.Il semble que s'il n'est pas présenté, peu importe ce qu'il essaiera d'afficher un titre, cela signifie qu'il est affiché puis masqué avant d'être dessiné et résout le problème.
la source
la source
J'ai créé une catégorie de configuration zéro très simple pour masquer tous les titres du bouton de retour via l'application, vous pouvez le vérifier ici . Cette question a déjà accepté la réponse, mais pour d'autres, elle peut être utile.
ÉDITER:
fichier .h
fichier .m
la source