UINavigationBar personnalisé bouton de retour sans titre
Comment puis-je personnaliser la navigation bouton de retour dans iOS 7 et ci-dessus sans titre? (c'est à dire avec la flèche uniquement)
self.navigationItem.leftBarButtonItem = self.editButtonItem;
Je me demande si ils ont tout de soi.backButtonItem;
OU
quelque chose comme cela?
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemBACK
target:self action:@selector(back)];
- Vous pouvez utiliser @hiroshi réponse + barre de navigation nuance de couleur de la propriété pour faire de chevron avec des couleurs personnalisées et sans titres
- Pour ceux qui ont une barre d'onglet, et vous ne voulez pas que le texte de bouton de retour, la solution est: dans le viewDidLoad() de la TabBarController: l'auto.navigationItem.backBarButtonItem = UIBarButtonItem(titre: "", style: .plaine, cible: néant, action: néant)
InformationsquelleAutor Kiddo | 2013-09-18
Vous devez vous connecter pour publier un commentaire.
C'est en fait assez simple, voici ce que je fais:
Objective C
Swift 2
Swift 3
Mettre cette ligne dans la vue contrôleur qui est de pousser à la pile (la vue précédente contrôleur). Le nouvellement poussé vue contrôleur de bouton de retour va maintenant montrer tout ce que vous mettez pour initWithTitle, qui dans ce cas est une chaîne vide.
prepareForSegue
dans la vue contrôleur et il a parfaitement fonctionné.J'ai trouvé un moyen facile de faire de mon bouton de retour avec iOS flèche unique.
Nous allons supouse que vous avez une manette de navigation va ViewA de ViewB. Dans IB, sélectionnez ViewA de la barre de navigation, vous devez voir ces options: le Titre, l'Invite et Bouton de Retour.
ViewA naviguer dans les options de la barre
L'astuce est de choisir votre destin-vue-contrôleur de bouton de retour titre (ViewB) dans les options de précédente - vue-contrôleur (Une Vue). Si vous ne cochez pas l'option "Bouton Retour", iOS va mettre le titre "Retour" automatiquement, avec précédente - vue-contrôleur du titre. Donc, vous devez remplir cette option avec un seul espace.
Remplir l'espace dans le Bouton "Retour" option
Le Résultat:
Back Button
ensemble à un seul caractère espace (c'est à dire à la fois ViewA et ViewB)Il suffit d'utiliser une image!
OBJ-C:
SWIFT 4:
De L'Icône De L'Arrière.png
[email protected]
[email protected]
navigationController?.interactivePopGestureRecognizer?.delegate = self
fait le truc pour garder le glissement retour gesteiOS7 a la nouvelle interface des règles, Il est donc préférable de conserver au moins la flèche de retour lorsque vous appuyez sur une UIView.
Il est très facile de changer le "retour" du texte par programmation. Il suffit d'ajouter ce code avant de pousser la vue (Ou prepareForSegue si vous utilisez des story-boards):
Cela va changer la valeur par défaut "Retour" du texte, mais permet de garder le iOS7 style de flèche de retour.
Vous pouvez également modifier la teinte de la couleur de la flèche de retour avant de pousser la vue:
Espère que cela vous aide!
Rien beaucoup que vous devez faire. Vous pouvez obtenir le même à travers le storyboard d'elle-même.
Juste aller à la racine de la manette de Navigation et de donner un espace. Rappelez-vous de ne pas le contrôleur vous voulez que le bouton de retour, sans titre, mais à la racine de la manette de navigation.
Tout Kyle Begeman réponse totalement fait le truc, c'est assez ennuyeux d'avoir ce code dans chaque vue-contrôleur possible. J'ai fini avec un simple
UINavigationItem
catégorie. Attention, ici il y a des dragons! Désolé, je veux dire, swizzling:[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault];
(source) -- peut-être un peu moins élégante, mais swizzling senti comme overkillUINavigationItem
très propre méthode, il n'y a pas d'héritage en cause. Et_cmd
est très rare d'être impliqués dans un getter. De toute façon si, c'est un bon point. Si y'all, si vous avez un de ces nombreux swizzling aides dans votre projet, assurez-vous d'utiliser ici aussi.EDIT: 2014-04-09: Comme je l'ai acquis une réputation, je suis désolé car je n'utilise pas ce truc en plus. Je vous recommande de Kyle réponse. Notez également que le
self
deself.navigationItem.backBarButtonItem
n'est pas le point de vue du contrôleur sur le bouton de retour est affiché, mais la vue précédente contrôleur est allé en arrière.Si vous n'avez pas besoin d'avoir un titre de texte pour l'affichage précédent contrôleur, il vous suffit de remplir le titre avec une chaîne vide;
Cela permettra d'éviter de faire preuve de "retour" avec chevron sur le poussé-vue-contrôleur.
EDIT: Même vous utilisez des non-vide de texte titre, définir le titre de la vue précédente contrôleur dans
viewWillAppear:
fonctionne sauf le titre peut scintiller en un clin d'oeil quand-vue-contrôleur sauté. Je pense que "L'application twitter" semble faire de plus en plus subtiles hack pour éviter le scintillement.Cela fonctionne, mais il va supprimer le titre de la rubrique précédente, même si vous pop-back:
Définissez cette propriété sur
viewDidLoad
de la poussée-Vue-Contrôleur.viewWillAppear
de sorte qu'il est toujours réglé correctement.C'est comment je le fais et le plus simple, de travaux et plus moyen de le faire.
Cela fonctionne si embed sur
Navigation Controller
Swift 3
Dans
viewDidLoad
j'ai ajouter ceci à la Vue du Contrôleur que vous souhaitez sur le bouton back pour être juste flèche.La différence à @Kyle Begeman la réponse est que vous appelez cela sur l'avis du contrôleur que vous souhaitez sur le bouton back pour être juste flèche, pas sur le poussant vue de la pile de la manette.
Vous n'avez pas accès à la navigation backButtonItem avec la façon dont vous voulez, vous devez créer votre propre bouton comme ci-dessous:
Et bien sûr:
Simple hack de iOS6 fonctionne sur iOS7 trop:
Edit:
Ne pas utiliser ce hack. Voir les commentaires pour plus de détails.
Cible:
la personnalisation de tous les bouton de retour sur
UINavigationBar
à une icône blancheSuit:
1. dans "didFinishLaunchingWithOptions" méthode de AppDelete:
2.dans le
viewDidLoad
méthode de la commune de superViewController
classe:SWIFT 4
Pour ceux qui cherchent à créer des boutons de retour et d'avoir leur titre retiré, veuillez utiliser le morceau de code suivant à l'intérieur de la vue-contrôleur qui pousse le nouveau:
Pour une utilisation universelle, procédez de la manière suivante:
Créer une fonction universelle comme suit:
Ensuite l'utiliser dans la vue des contrôleurs comme suit:
vous pouvez utiliser cette. Cela fonctionne parfaitement pour moi, par simple ajout d'un
UIButton
comme un custumview pour laUIBarButtonItem
.Essayer le Code ci-Dessous
Toutes les réponses ne permettent pas de résoudre le problème. Il n'est pas acceptable de faire reculer titre du bouton dans chaque vue-contrôleur et l'ajout de décalage pour le titre fait toujours de côté-Vue-Contrôleur titre décalage vers la droite.
Voici la méthode à l'aide de la méthode swizzling, il suffit de créer une nouvelle extension à la UINavigationItem
Créer un
UILabel
avec le titre que vous voulez pour votre vue de la racine de contrôleur et de l'attribuer à la vue du contrôleur denavigationItem.titleView
.Maintenant définir le titre à une chaîne vide à la vue suivante contrôleur de vous pousser aura un bouton de retour sans texte.
Vous pouvez sous-classe UINavigationController, mis lui-même en tant que délégué, et de définir la backBarButtonItem dans la méthode du délégué
navigationController:willShowViewController:animated:
Reculer titre vide
Changer l'image
J'utilise cette solution depuis iOS 5 sans aucun problème. J'ai fait une fonction d'utilité que j'appelle de mon point de vue contrôleurs. Vous avez besoin de faire soit dans le viewDidLoad ou à tout moment après que.
Dans certains cas, l'élément de navigation existent peut-être déjà, dans d'autres cas, il doit être créé. Cela représente pour ces deux derniers cas, sans interférence avec l'élément de navigation de titre. Il vous permet de retirer le titre d'un simple passage dans
@""
.J'ai appliqué le code suivant dans le viewDidLoad et ça fonctionne:
Juste de mettre à jour j'utilise Icône de Vecteur de
Le seul moyen qui a fonctionné pour moi a été:
Mise à JOUR:
Quand j'ai changé la séquence de l'animation du pavillon de vrai (C'était faux avant), le seul moyen qui a fonctionné pour moi a été:
Si vous avez deux ViewController(FirstVC, SecondVC) Intégrer dans la Navigation de Contrôleur, et que vous voulez il ya seulement flèche de retour dans SecondVC.
Vous pouvez essayer ce
Dans FirstVC de ViewDidLoad
Puis, quand vous poussez dans SecondVC, vous verrez qu'il n'y a seulement flèche de retour
Si vous définissez la nuance de couleur De NavigationBar,ajouter un bouton de retour de l'image sans titre de cette nuance de couleur sera de refléter la couleur de l'image. Veuillez suivre cette pomme documentaion lien.
https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/index.html#//apple_ref/doc/uid/TP40012857-UIView-SW7
Vérifier cette réponse
Comment faire pour modifier le UINavigationController bouton de retour nom?
ensemble
title
textestring
avec un espace vide comme ci-dessousN'ont pas assez de réputation pour ajouter des commentaires 🙂
Je suis écrit une extension pour rendre cela plus facile:
Vous pouvez modifier le titre, @ "" de l'actuel ViewController sur viewWillDisappear, et quand il s'agit de montrer à nouveau re-définir le titre de ce qu'il était avant.
Dans le prepareForSegue: méthode de votre première ViewController vous définissez que les opinions titre de @"", de sorte que lorsque la fenêtre suivante est poussé il apparaît le ViewController titre qui sera @"".
Le seul problème avec cela est que lorsque vous appuyez sur le bouton retour de votre vue précédente de ne pas avoir un titre, donc vous pouvez l'ajouter à nouveau sur viewWillAppear:
Je n'aime pas beaucoup cette solution, mais ça fonctionne et je n'ai pas trouvé d'autre moyen de le faire.
À ajouter à La réponse de Thomas C ci-dessus, parfois de mettre un espace unique ne fonctionne pas et vous devez garder en ajoutant des espaces.
Vous saurez que vous avez réussi quand vous voyez "Bouton de la Barre d'Élément" dans le cadre du "Élément de Navigation". C'est dans la structure du Document (Éditeur->Afficher la structure du Document). Une fois que vous voyez l'image ci-dessus, vous pouvez supprimer quelques places de et voir si elle fonctionne encore.
Tout comme Kyle Begeman, vous ajoutez le code ci-dessus à la racine de votre vue-contrôleur. Tous les sous-vue-contrôleur sera appliqué. En outre, l'ajout de cette dans initWithCoder: méthode, vous pouvez appliquer le style de vue de la racine de contrôleurs dans xib, storyboard ou code approches fondées.
Vous pouvez placer cette catégorie dans AppDelegate.m de fichier.
pour éliminer l'
textede tous par défaut des boutons de retour dans UINavigation. Seulement la flèche "<" ou image personnalisée si vous avez besoin d'.Objective-c:
...
@fin
Ensemble de bouton de retour de l'élément de titre comme une Chaîne vide.
[self.navigationController.navigationBar.backItem setTitle:@""];
Cela fonctionne un régal pour les iOS6 et 7
Xamarin(C#) options
Objective-C option
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault]
;Cela a fait l'affaire pour moi
Tous les meilleurs
Je suis la modification des vues de titre quand il disparaît