Le "bouton retour" d'un UINavigationController
affiche par défaut le titre de la dernière vue de la pile. Existe-t-il un moyen d'avoir un texte personnalisé dans le bouton retour à la place ?
Vous devez release
le site UIBarButtonItem
.
Le "bouton retour" d'un UINavigationController
affiche par défaut le titre de la dernière vue de la pile. Existe-t-il un moyen d'avoir un texte personnalisé dans le bouton retour à la place ?
De ce lien :
self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"Custom Title"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
Comme Tyler l'a dit dans les commentaires :
ne le faites pas dans le contrôleur de vue visible, mais dans la vue que vous verrez si vous cliquez sur le bouton "retour".
Notez également que vous devez effectuer cette opération dans le contrôleur de vue, un niveau au-dessus de la pile. En d'autres termes, ne le faites pas dans le contrôleur de vue visible, mais dans le contrôleur de vue que vous verriez si vous appuyiez sur le bouton retour.
Vous pouvez définir le texte dans l'Interface Builder :
Sélectionnez l'élément de navigation du ViewController sur lequel le bouton retour doit revenir :
Dans l'inspecteur d'attributs du panneau Utilitaires, saisissez l'étiquette du bouton Retour :
Je préférerais cette approche plutôt que de définir le titre dans le code comme dans la réponse acceptée.
Notez également que vous devez effectuer cette opération dans le contrôleur de vue, un niveau au-dessus de l'élément pile. En d'autres termes, ne le faites pas dans le contrôleur de vue visible, mais dans le contrôleur de vue que vous verrez si vous appuyez sur le bouton retour.
--Tyler
Pour être clair, cela doit être défini sur l'élément de navigation du contrôleur de vue, et non sur l'inspecteur d'attributs du contrôleur de vue lui-même.
Cela fonctionne presque pour moi, mais lorsque je clique sur le bouton retour, le texte redevient le titre du parent pour la durée de l'animation :-(
Cela modifie le titre du bouton Retour du contrôleur situé en haut de la pile. Elle ne modifie pas le titre du bouton Retour du contrôleur actuellement affiché. Pire encore : cela change le titre du contrôleur précédent !
J'ai trouvé une solution pratique à ce problème en fixant simplement le titre du contrôleur avant de pousser un autre contrôleur sur la pile, comme ceci :
self.navigationItem.title = @"Replacement Title";
[self.navigationController pushViewController:newCtrl animated:YES];
Ensuite, assurez-vous de définir le titre original dans viewWillAppear
comme ceci :
-(void)viewWillAppear:(BOOL)animated
{
...
self.navigationItem.title = @"Original Title";
...
}
Cela fonctionne car le comportement par défaut de UINavigationController
lors de la construction du bouton retour lors d'une opération de poussée est d'utiliser le titre du contrôleur précédent.
Le problème, c'est que le titre change sur l'ancienne vue et qu'il s'anime, ce qui donne un aspect un peu bizarre. Aucune des solutions proposées ici ne semble fonctionner comme vous le souhaiteriez :-(
C'est parfait dans ma situation, car je n'affiche pas la barre de navigation sur l'écran précédent et je veux juste supprimer le titleLabel du bouton retour sur le nouvel écran et n'avoir que la flèche en chevron d'iOS7. Je peux donc simplement définir un littéral NSString vide pour le titre.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Ce travail pour moi
self.navigationController.navigationBar.topItem.title = @"Custom text";