2010-01-13 8 views
7

Lorsque je place un nouveau ViewController sur une pile de contrôleur de navigation, le bouton «Précédent» correspond au titre du précédent contrôleur. Comment puis-je changer le texte dans le bouton de retour à "Retour" au lieu du nom par défaut du dernier contrôleur?iPhone: NavigationController NavigationBar Texte du bouton Précédent

+0

sais juste que cela est mal vu par les directives d'interface iPhone d'Apple. (Bien que cela soit nécessaire quand les titres sont longs.) –

Répondre

1

Vous pouvez définir le titre sur le titre navigationItem du contrôleur de la vue principale. Fondamentalement, chaque UIViewController a un petit bout UINavigationItem qui contient des métadonnées sur la façon dont cette vue doit être référencée à l'intérieur d'un UINavigationController. Par défaut, cette métadonnée revient simplement au UIViewController lui-même.

En supposant « soi » est le UIViewController de la vue qui est visible à l'intérieur du UINavigationController, définissez:

self.navigationItem.title = @"My Custom Title" 
+3

Cela fait non seulement du titre des boutons "Mon titre personnalisé" mais aussi de la page précédente dans le titre de la pile de navigation "Mon titre personnalisé". – Matt

10

Vous devez créer un bouton personnalisé sur le contrôleur de navigation. Placez le code suivant dans le viewDidLoad dans votre racine View Controller:

UIBarButtonItem * tempButtonItem = [[[ UIBarButtonItem alloc] init] autorelease]; 
tempButtonItem .title = @"Back"; 

self.navigationItem.backBarButtonItem = tempButtonItem ; 

En réglant le bouton de la barre de navigation sur la racine View Controller, la vue montre poussé le bouton de retour approprié.

27

Ceci est la bonne façon de faire un bouton de retour avec autre chose que le titre pages précédentes

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init]; 
barButton.title = @"Your Title"; 

self.navigationItem.backBarButtonItem = barButton; 

Son à ma compréhension que:

self.navigationItem.backBarButtonItem.title = @"Your Title"; 

fera le titre de la barre de navigation sur la page précédente ce qui n'est pas ce que vous voulez.

2

Vous pouvez modifier le titre du contrôleur d'affichage actuel du contrôleur de navigation avant de pousser le nouveau contrôleur de vue:

self.title = @"Custom Title"; 

[self pushViewController: newViewController ...]; 

and in the navigation controller's delegate class 

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

if([viewController class] == [OldViewController class]) { 

viewController.title = @"Your previous title"; 

} 

} 
12

Je sais, la question est très ancienne, mais j'ai trouvé une belle solution.

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init]; 
barButton.title = @"back"; 
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton; 

Fonctionne avec childView! Testé avec iOS 7.

+2

Ceci devrait être la réponse acceptée. – nickdnk

0

Vous pouvez y parvenir en définissant le titre du bouton Retour dans la fonction « viewWillDisappear » du contrôleur d'origine comme suit:

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" 
} 
Questions connexes