2009-10-08 8 views
55

Lo faccio in un UIViewController per una delle mie schede:self.title imposta navigationController e il titolo di tabBarItem? Perché?

self.title = @"Welcome"; 

Tuttavia, è sovrascrivendo tutto quello che ho per il tabBarItem. Ho provato:

self.tabBarItem.title = @"Home"; 

e

[self.tabBarItem initWithTitle:@"Home" image:[UIImage imageNamed:@"iconHome.png"] tag:0]; 

Ma ancora, self.title sovrascrive il tabBarItem, indipendentemente dal fatto che sto cercando gli ultimi due pezzi di codice dopo il titolo è stata impostata. Il codice funziona anche senza errori, ma lo self.tabBarItem.title o initWithTitle non fa nulla?

risposta

160

OK, ho capito! Ecco quello che sto facendo:

self.title = @"Title for TabBarItem"; // TabBarItem.title inherits the viewController's self.title 
self.navigationItem.title = @"Title for NavigationBar"; 

il navigationBar avrebbe ereditato self.title, se non diversamente impostato usando self.navigationItem.title

+0

Stavo incontrando esattamente lo stesso problema quando usavo un UINavigationController all'interno di un UITabController. Questo l'ha risolto. –

+3

non so il tuo, ma non funziona per me :( – cV2

+0

Questo funziona per me .Grande per modificare solo il titolo superiore in base al contenuto anche se il controller di visualizzazione non cambia. – lilbyrdie

0

Prova:

[self setTitle:@"Welcome"]; 

UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"Home" image:[UIImage imageNamed: image] tag:0]; 
[self setTabBarItem:item]; 
[item release]; 
+0

Hmm. Non funziona neanche. "Benvenuto" (titolo per sé) è sempre lo stesso per il tabBar. Molto frustrante, in realtà. Ho parlato con un amico dev che ha detto che l'unico modo in cui era in grado di farlo in modo diverso, era impostare il titolo del controller di navigazione in IB, e quindi non impostare self.title nel codice. Ma sembra strano. Se nessuno viene qui con una soluzione, potrei presentare un bug report ad Apple. – runmad

+0

Fuori interesse in cui stai eseguendo la configurazione della barra delle linguette? L'esempio sopra viene dal metodo init del mio controller. Non utilizzo il generatore di interfacce per le mie viste (sono personalizzate o create in loadView). Questa potrebbe essere la differenza. – Kevin

+0

Sì, sto usando IB, ma ho provato ad avviare le schede in ogni UIViewController (NavigationController). Daremo un'occhiata a cosa succede se inserisco il codice sopra in un metodo init in UIViewController ... – runmad

0

Sono stato anche affrontando lo stesso problema, ma ho risolvere questo problema come questo. Ho impostato il titolo e l'immagine di tabBarItem subito dopo averli creati in appDelegate.

Questo è quello che ho fatto:

[viewController setTitle:@"controllerTitle"]; 
[[viewController tabBarItem] setTitle:@"Custome Title for tab"]; 
[[viewController tabBarItem] setImage:[UIImage imageNamed:@"tab.png"]]; 
52
//set nav item title 
self.navigationController.navigationBar.topItem.title = @"zurück"; 

questo ha fatto per me: =) (nulla di quanto sopra ha funzionato)