2009-02-05 11 views
0

J'ai un RootViewController et un SubViewController. Je traverse les vues dans les deux sens. Le RootViewController est une sous-classe UITableView. En fonction de la ligne sélectionnée, je souhaite modifier le titre de la sous-vue à l'aide de self.navigationItem.title = [chunks objectAtIndex:1];navigationItem.title ne se rafraîchit pas

Cela fonctionne lorsque la sous-vue est chargée pour la première fois. Mais quand je reviens au RootViewController et que je charge à nouveau la sous-vue, le titre précédent persiste. Des idées sur ce que je rate?

Répondre

0

Je viens de l'essayer dans une application à moi. Lorsque je définis le titre en utilisant

self.navigationItem.title = @"Foo" 

le nom dans la barre de navigation change instantanément. Je pense que vous avez un bug ailleurs que le code que vous appelez n'est appelé que la première fois que vous appelez votre SubViewController. Coller un point de rupture sur cette ligne et voir si elle est réellement appelée une deuxième fois. Ou peut-être [morceaux objectAtIndex: 1] renvoie toujours la même chaîne. Ou peut-être que je ne comprends pas votre question. Autant que je sache, cela fonctionne comme vous l'attendez.

1

Dans votre cas particulier, vous souhaitez probablement définir votre titre dans viewWillAppear: afin que le titre soit défini chaque fois que la vue s'affiche à l'écran.

+0

J'ai eu le même problème et c'est ce qui a fonctionné pour moi, FWIW. Il me semble toujours un peu "hacky". – Prairiedogg

0

Je suppose que vous essayez de changer le titre dans la méthode viewDidLoad. ViewDidLoad est appelée uniquement la première fois que la vue est chargée. Si vous réutilisez l'instance de viewcontroller, viewDidLoad ne sera appelée qu'une seule fois.

Essayez plutôt de définir le titre dans la méthode viewWillAppear. Cette méthode est appelée à chaque fois que la vue est affichée. Cela devrait fonctionner.