Par défaut, le bouton Précédent utilise comme texte le titre d'un contrôleur de vue . Puis-je modifier le texte du bouton Retour sans modifier le titre d'un contrôleur de vue? J'ai besoin de cela car j'ai un contrôleur de vue qui Le titre est trop long à afficher et dans ce cas, je voudrais afficher uniquement "Back" comme légende pour le bouton Précédent.
J'ai essayé le suivant qui n'a pas fonctionné:
self.navigationItem.leftBarButtonItem.title = @"Back";
Merci.
Essayer
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
J'ai trouvé cela en consultant les documents backBarButtonItem dans la documentation Apple pour UINavigationItem .
L'approche de Marc W a très bien fonctionné une fois que j'ai compris à quel contrôleur l'appliquer: celle qui est renommée, pas celle qui se trouve en haut. Donc, s'il s'agit de la pile de navigation:
(bottom) ControllerA -> ControllerB (top)
... et vous voulez attribuer un titre plus court à ControllerA dans le bouton Précédent affiché lorsque ControllerB est en haut , vous appliquez le changement de propriété à ControllerA .
C'est donc plutôt dans le contexte de self.title
, pas comme dans les autres boutons de réglage gauche/droite.
Vous pouvez le faire dans le storyboard. Recherchez le contrôleur de vue sur lequel vous souhaitez revenir (celui avec le titre long), sélectionnez son élément de navigation, ouvrez l'inspecteur des attributs (Alt + Cmd + 4), insérez le titre du bouton Précédent personnalisé.
Merci Marco ... ça m'a aidé ...
Voici ce que j'ai fait.
Si vous utilisez une tableView pour naviguer entre différentes vues ... mettez le code:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
Dans votre méthode didSelectRowAtIndexPath
... du premier contrôleur ... contrôleur A.
Lorsque vous accédez au contrôleur B, le bouton porte le titre "Back".
Le bouton Précédent tire son texte du titre du contrôleur de vue parent.
Dans le contrôleur de vue parent (le contrôleur de vue qui apparaît lorsque vous appuyez sur le bouton Précédent), définissez son propre titre en tant que texte souhaité du bouton Précédent.
Par exemple, supposons que nous ayons une classe RootViewController
. Lorsque nous cliquons sur une cellule dans sa vue sous forme de tableau, nous poussons une instance de SecondViewController
. Nous voulons que le bouton Précédent de l'instance SecondViewController
se lise: "Accueil".
dans la méthode viewDidLoad
de RootViewController.m:
self.title = @"Home";
dans la méthode viewDidLoad
de SecondViewController.m:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
Si vous souhaitez que votre bouton Précédent indique "Précédent", définissez le titre du contrôleur de vue parent sur @"Back"
;
Cela fonctionne mieux pour moi. Essayez:
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
Si vous utilisez le storyboard:
C'est ça, profitez-en ...
Et dans MonoTouch, les travaux suivants (dans ViewDidLoad du contrôleur parent):
NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);
Dans votre contrôleur de vue parent, définissez le bouton Précédent lors du chargement de la vue:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"title"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
}
Notez qu'il n'est pas nécessaire d'inclure autorelease
à la fin de la dernière version iOS.
J'espère que cela t'aides!
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];
Cela a fonctionné pour moi.
Celui-ci a fonctionné pour moi si vous ne voulez pas avoir un titre!
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
[self.navigationController.navigationBar.backItem setTitle:@"back"];
Ça marche pour moi. Vous pouvez remplacer "retour" par autre chose.
Pour changer le titre du bouton précédent, reportez-vous au code ci-dessous.
InformationVC *infoController=[[InformationVC alloc]init];[self.navigationController infoController animated:YES];
//Below code changed back button title on InformationVC page.
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Information" style: UIBarButtonItemStylePlain target: nil action: nil];
self.navigationItem.backBarButtonItem = backBarButton;`enter code here`
Je savais enfin pourquoi ces réponses ne fonctionnaient pas pour moi au début Je mets le titre dans le storyboard. Quand je mets le titre sur le code. Ça marche!
self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
// Vous pouvez y parvenir en définissant le titre dans le contrôleur de vue précédent comme indiqué ci-dessous
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
//Set Title for this view
self.navigationItem.title = "My Title"
}
override func viewWillDisappear(animated: Bool) {
super.viewWillAppear(animated)
//Set Title for back button in next view
self.navigationItem.title = "Back"
}
Ma solution a été de définir le titre lorsque le contrôleur de vue est placé dans la pile de navigation et de le réinitialiser à l'aide de la méthode déléguée avant la fermeture de vc par poussée
Donc, je mets le changement de titre dans le contrôleur de vue appelant lorsque je pousse l'autre contrôleur de vue comme:
self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"];
self.pushedVC.delegate = self;
[self.navigationController pushViewController:self.pushedVC animated:YES];
self.title = @"Back";
et en fonction de rappel délégué (que j'appelle dans viewWillDissapear):
-(void)pushedVCWillClose:(PushedVC *)sender
{
self.title = @"Previous Title";
}
Si vous souhaitez non seulement modifier le texte du bouton Précédent et rester la forme d'origine de la flèche gauche, mais également effectuer une action lorsque l'utilisateur clique sur le bouton Précédent, je vous recommande de jeter un coup d'œil à mon " CustomNavigationController " .