2010-08-01 6 views
5

J'essaie le code suivant:Comment définir correctement le titre navigationController d'un UIViewController?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
Thing *sub = [[subscriptions objectAtIndex:indexPath.row] retain]; 
StoriesViewController *thing = [[StoriesViewController alloc] initWithThing:sub]; 
thing.navigationController.title = sub.title; 
[self.navigationController pushViewController:thing animated:YES]; 
[thing release]; 
[sub release]; 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

Je pensais que c'est la façon dont vous définissez correctement le titre pour pousser le contrôleur. J'ai essayé thing.title cependant qui définissait le titre de TabBarItem à la place.

+0

Plus soigneusement discuté ici: http://stackoverflow.com/questions/2280710/iphone-setting-navigation-bar-title –

Répondre

14
thing.navigationItem.title = sub.title; 

ou dans le fichier StoriesViewController.m dans viewDidLoad méthode:

self.navigationItem.title = sub.title 
+0

thing.navigationItem.title ne fonctionne pas, je l'ai essayé avant et après que je pousse le ViewController sans chance. –

+0

le définir dans la méthode viewDidLoad de votre contoroller – jamapag

+2

Salut, j'ai essayé self.navigationController.title = @ "Enregistrement"; quelle est la différence? il ne fonctionne pas – OMGPOP

1

Le titre doit être définie (ou après) viewDidLoad, donc si vous voulez régler d'une autre classe qui crée StoriesViewController .

  1. Faites une autre propriété et définissez cette classe.
  2. Dans viewDidLoad de StoriesViewController, définissez le titre de cette propriété.

Cela est dû au fait que les prises ne sont pas initialisées sur leurs homologues de vue avant viewDidLoad.

Il semble que StoriesViewController conserve la valeur sub (est-ce que initWithThing lui a attribué une propriété?) Dans ce cas, définissez simplement le titre dans viewDidLoad sur le titre de la propriété Thing.

+0

Ne semble pas fonctionner, bien que votre raisonnement est logique. –

0
[thing setTitle: sub.title]; 
0

La solution a été thing.navigationItem.title = @"title"; mais il se trouve que le sous-classement un UINavigationController rompit en quelque sorte et ma solution qui était d'utiliser une catégorie plutôt qu'une sous-classe

0

Si votre UIViewController fait partie d'un UITabController, puis vous pouvez faire:

self.tabBarController.title = sub.title; 
1

Il est possible que vous poussez un UITabBarController à la place de votre contrôleur de vue habituel. Dans ce cas, l'élément navigationItem affiche le titre du contrôleur actuel, le contrôleur de la barre d'onglets, même si vous voyez une autre vue. Vous devrez modifier le titre du contrôleur de la barre d'onglets pour modifier le texte affiché ci-dessus.

self.tabBarController.title = @"Your title"; 
Questions connexes