2010-06-16 6 views
1

Je change le titre de l'élément de bouton de retour dans le viewDidAppear d'un contrôleur de la manière suivante:comportement étrange lors d'un changement UINavigationController titre backItem

self.navigationController.navigationBar.backItem.title = @ « Précédent »;

Il change le titre correctement, mais j'ai un comportement étrange. Lorsque je sélectionne le bouton « précédent », il change le titre du contrôleur qui est dans la pile (le contrôleur parent a maintenant le titre « Précédent ».

-vous maintenant pourquoi cela est arrivé

?

Répondre

0

Lorsque vous utilisez un contrôleur de navigation, l'appel de [self setTitle: @ "Title"]; à l'intérieur de n'importe quel contrôleur de vue dans la pile définira le titre de la barre de navigation.C'est également le titre utilisé par défaut Apparemment, d'après ce que vous expérimentez, en définissant explicitement le titre du backItem, vous le définissez également pour le titre de la barre de navigation du contrôleur de vue précédent, en ignorant tout ce qui est spécifié dans l'appel à -setTitle dans le contrôleur de vue.

Il vaudrait probablement mieux que gérer le titre depuis les contrôleurs de vue de votre pile de navigation. Quand vous allez à pousser un nouveau contrôleur de vue, faites ceci:

[self setTitle:@"Previous"]; 
NextViewController *controller = [[NextViewController alloc] init]; 
[[self navigationController] pushViewController:controller animated:YES]; 
[controller release], controller = nil; 

Maintenant, quand le contrôleur suivant affiche vue, le bouton de retour avec dire « Précédent ». Maintenant, il vous suffit de changer de nouveau à ce que son vrai titre devrait être en -viewWillAppear:

- (void)viewWillAppear:(BOOL)animated; 
{ 
    [self setTitle:@"Real Title"]; 
    [super viewWillAppear:animated]; 
} 

Il peut se sentir un peu hacky, mais il vaut mieux que d'essayer de passer outre la fonctionnalité de la barre de navigation. Lutter avec la barre de navigation/la pile du contrôleur de navigation peut s'avérer très frustrant.

Cordialement.

+0

Merci! Avec cette approche, cela a fonctionné comme je m'y attendais. – Rafael

+0

Il y a un problème avec cette approche que l'utilisateur voit le titre "Précédent" pendant un bref instant avant que la nouvelle vue ne soit poussée. –