2013-07-31 17 views
6

Nel mio delegato sto provando a selezionare il mio TabBarController in modo da poterlo modificare con uno sfondo diverso. Tuttavia il problema è che il mio TabBarController non si trova sul rootView ..Ottieni tabbarcontroller da un'altra vista sullo storyboard

mio codice corrente:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
UITabBar *tabBar = tabBarController.tabBar; 
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; 
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; 

Nel mio costruttore di interfaccia ho il mio TabBarController messa a punto con un nome Segue: MAINVIEW (Questo è dove il TabBarController si trova).

Come posso selezionare il mio TabBarController?

+0

in quale parte del il codice vuoi selezionare il tuo tabBarController? In un UIViewController che si trova all'interno del TabBar, APPDelegate, ...? –

+0

Sì sulla mia prima riga voglio sostituire 'self.window.rootViewController;' con il mio TabBarController in modo che io possa manipolarlo – Alosyius

+0

Sì, ma voglio sapere in quale ViewController/metodo si sta chiamando il pezzo di codice che hai appena postato –

risposta

9

In primo luogo, è necessario conoscere nella gerarchia della vista il proprio TabBarController. Se non è il tuo controller di root, individua UIViewController che chiama TabBarController e ottieni il suo riferimento in seguito o qualcosa del genere.

Che cosa potrebbe funzionare per te, è l'accesso alla proprietà tabBarController nello viewDidLoad del primo figlio UIViewController in una scheda all'interno di tabViewController. Tutti i figlio ViewControllers del tabBarController hanno questa proprietà.

Per esempio, assumendo prima UIViewController visualizzata nella barra delle linguette è MyViewController, eseguire qualcosa di simile:

- (void)viewDidLoad 
{ 
    UITabBar *tabBar = self.tabBarController.tabBar; 
    UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; 
    UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; 
} 
5

Se si vuole ottenere da uno dei panorami

//if Custom class 
TabBarController *tabBar = (TabBarController *) self.tabBarController; 

//if Custom class with Navigation Controller 
TabBarController *tabBar = (TabBarController *) self.navigationController.tabBarController; 

//if Not Subclassed 
UITabBarController *tabBar = (UITabBarController *) self.tabBarController; 

//if Not Subclassed with Navigation Controller 
UITabBarController *tabBar = (UITabBarController *) self.navigationController.tabBarController; 
Problemi correlati