2012-12-20 22 views
5

Ho un'app con un TabBar con 5 schede (barra delle schede normale senza classe personalizzata). Quando avvio l'app viene aperta la scheda sinistra. Voglio che prima apra quello centrale. Ho provato a mettereAprire l'app in una scheda specifica nella barra delle schede

[self.tabBarController setSelectedIndex:3]; 

nel viewDidLoad del ViewController che viene dapprima aperta ma la scheda non sta passando. Posso vedere è evidenziato ma non selezionato. Se inserisco il codice di cui sopra sotto viewWillAppear verrà selezionato alla prima esecuzione ma quando selezionerò la scheda di sinistra di volta in volta salterà a quella centrale.

provato anche questo senza successo:

DetailsViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailsViewController"]; 
[self.navigationController pushViewController:vc animated:true];  

Che cosa sto facendo di sbagliato?

+1

Il TabBar è stato aggiunto dal generatore di interfaccia o utilizzando il codice? Interfaccia –

+0

. E trascinare i sega attivati ​​per visualizzare i controllori – Segev

+0

Forse [collegamento successivo] (http://stackoverflow.com/questions/4195316/iphone-how-i-hide-a-tab-bar-button) ti aiuterà, se ho capito bene. – Neznajka

risposta

8

Questa è l'unica soluzione che ha funzionato per me. in appdelegate:

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
[tabBar setSelectedIndex:2]; 
0

È necessario chiamare

tabBarController.selectedIndex = desiredIndex; 

All'interno applicationDidLaunch.

+0

Questo non funziona per me. – Segev

0

Provare a impostarlo in applicazione: didFinishLaunchingWithOptions: se il controller TabBar è RootViewController come

`[self.window.rootViewController.tabBarController setSelectedIndex:3];` 
+0

Nel mio 'appdelegate'? Che non ha funzionato – Segev

0

In storyboard impostare classe personalizzata alla tabbarController e in quella classe personalizzata

-(void) viewDidLoad 
{ 
    [self.tabBarController setSelectedIndex:3]; 
} 
0

ho fatto qualcosa hackish nel passato. Ho trovato in modo che ciascuna scheda per diventare attivo, nel mio applicationDidFinishLaunching, ho bisogno di scorrere tutti i miei controller di vista quindi accedere alla "vista" proprietà:

for(viewController in arrayOfViewController) 
{ 
    // will load the view controller into memory 
    [viewController view]; 
} 

Non so se si può fare qualsiasi uso di esso.

+0

male + Non riesco a capire perché questo dovrebbe aiutare ... –

Problemi correlati