15

Nella mia app ho un UINavigationController all'interno di UITabBarController. Tutto funziona bene, tuttavia non posso impostare il titolo per il controller di navigazione. Ho provato diversi metodi e cercato su google, ma sembra che non ci sia alcuna soluzione per questo problema.UINavigationController all'interno di UITabBarController, impostazione del titolo del controller di navigazione

Qualsiasi aiuto sarebbe molto apprezzato.

Grazie in anticipo.

Sam

+0

Eventuali duplicati: http://stackoverflow.com/questions/2760634/cocoa-touch-setting-uinavigationcontrollers-title-doesnt-work –

+0

Sicuramente si dovrebbe essere specificando il titolo del controller della vista nel controller della vista e quindi il controller di navigazione verrà applicato il titolo corretto? – ader

+0

Sto specificando il titolo nel controller della vista. Grazie. Sam. – shoughton123

risposta

38

ho trovato la risposta, alla fine, è stato:

self.tabBarController.navigationItem.title = @"title"; 
2
self.navigationItem.title = @"Your Title" 

funziona per ogni caso.

+1

Ho provato questo e non funziona. Grazie comunque! – shoughton123

+1

Questo dovrebbe funzionare. Assicurati che 'self.navigationItem' non restituisca nulla. Se nulla, controlla le tue connessioni. – Gobot

+0

Se stai caricando da uno xib o dallo storyboard, prova a trascinare un oggetto di navigazione sul tuo viewController, se non ce n'è uno –

1

Per me le seguenti opere di bene:

avviare il controller in appDelegateDidFinishLaunching: Metodo:

UINavigationController *navContr1; 
UINavigationController *navContr2; 

UIViewController *viewController1, *viewController2; 

viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease]; 
viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease]; 



navContr1  = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease]; 
navContr2  = [[[UINavigationController alloc] initWithRootViewController:viewController2] autorelease]; 


self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 
//self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navContr1, navContr2, nil]; 

self.window.rootViewController = self.tabBarController; 
[self.window makeKeyAndVisible]; 

con questo fatto, nelle diverse viewControllers initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil - metodo è possibile modificare il titolo con la seguente riga:

self.title = @"Your Title"; 

Buona fortuna.

+0

Purtroppo sono già abbastanza profondo nella mia app, quindi non posso usare questo metodo esatto ma il mio isn ' questo è diverso Comunque facendo se stessi.il titolo non funziona, self.title imposta semplicemente il titolo per la barra delle schede. Grazie comunque! – shoughton123

+0

che dire di self.navigationController.title = @ "nuovo titolo"? – pmk

0

Guarda la classe UIViewController nella documentazione. C'è una proprietà che punta allo UINavigationItem che quindi ha una proprietà che punta allo title. Se il puntatore alla voce di navigazione restituisce zero, è necessario che i controller non siano stati cablati correttamente.

0

Il self.title imposta sempre la tessera del rootViewController oggetto della tua ViewController.

Se avete il vostro viewController & il rootViewController è UINavigationController, quindi self.title imposterà il titolo di UINavigationController.

Allo stesso modo, se avete inizializzato un UITabViewController con gli UIViewController oggetti, poi il self.title volontà applica sul titolo tasto corrispondente al indice, su UITabBar di UITabViewController.

Quindi, detto che, self.title si applica all'oggetto che contiene lo viewController.