2010-08-01 15 views
5

Sto cercando il seguente codice:Come si imposta correttamente il titolo NavigationController di 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]; 
} 

ho pensato che questo è il modo di impostare correttamente il titolo per spingere il regolatore. Ho provato a thing.title invece di impostare il titolo di TabBarItem.

+0

più a fondo discusso qui: http://stackoverflow.com/questions/2280710/iphone-setting-navigation-bar-title –

risposta

14
thing.navigationItem.title = sub.title; 

o in file di StoriesViewController.m in viewDidLoad metodo:

self.navigationItem.title = sub.title 
+0

thing.navigationItem.title non funziona, ho provato prima e dopo spingo il ViewController senza fortuna. –

+0

impostalo nel metodo viewDidLoad del tuo contoroller – jamapag

+2

Ciao, ho provato self.navigationController.title = @ "Registration"; qual è la differenza? non funziona – OMGPOP

1

Il titolo deve essere impostato in (o dopo) viewDidLoad, quindi se si desidera impostare da un'altra classe che sta creando StoriesViewController .

  1. Creare un'altra proprietà e impostare tale classe.
  2. In StoriesViewController's viewDidLoad, impostare il titolo da quella proprietà.

Questo perché le prese non sono inizializzate sulle loro controparti di visualizzazione fino a viewDidLoad.

Sembra che StoriesViewController tenga premuto su sub (initWithThing imposta una proprietà su di esso?) In tal caso, è sufficiente impostare il titolo in viewDidLoad sul titolo della proprietà Thing.

+0

non sembra funzionare, anche se il tuo ragionamento ha un senso. –

0
[thing setTitle: sub.title]; 
0

La soluzione è stata thing.navigationItem.title = @"title"; però si scopre che sottoclasse un UINavigationController rotto in qualche modo e la mia soluzione a questo è stato quello di utilizzare una categoria piuttosto che una sottoclasse

0

Se il UIViewController fa parte di un UITabController, poi si può fare:

self.tabBarController.title = sub.title; 
1

E 'possibile si sta spingendo un UITabBarController al posto del tuo normale controller della vista. In questo caso, navigationItem visualizzerà il titolo del controller corrente, il controller della barra delle schede, anche se viene visualizzata un'altra vista. Dovresti modificare il titolo del controller della barra delle schede per cambiare il testo visualizzato sopra.

self.tabBarController.title = @"Your title"; 
Problemi correlati