2013-07-31 10 views
6

In meinem Delegate ich versuche, meine TabBarController auszuwählen, so dass ich es mit einem anderen Hintergrund stylen kann. Aber das Problem ist, dass mein TabBarController nicht auf dem RootView befindet ..Holen Sie Tabbarcontroller aus einer anderen Sicht auf meinem Storyboard

Mein aktueller Code:

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

In meinem Interface Builder ich habe meine TabBarController Setup mit einem Segue Namen: Mainview (Dies ist, wo die TabBarController befindet sich).

Wie kann ich meine TabBarController auswählen?

+0

in dem Teil erhalten mögen von der code willst du deinen tabBarController auswählen? In einem UIViewController, der in der TabBar ist, APPDelegate, ...? –

+0

Ja in meiner ersten Zeile Ich möchte 'self.window.rootViewController;' mit meinem TabBarController ersetzen, so dass ich es manipulieren kann – Alosyius

+0

Ja, aber ich möchte wissen, in welcher ViewController/Methode Sie das Stück Code aufrufen, den Sie gerade gepostet –

Antwort

9

Zuerst müssen Sie in Ihrer Sicht Hierarchie wissen, wo ist Ihr TabBarController. Wenn es sich nicht um Ihren Root-Controller handelt, suchen Sie den UIViewController, der den TabBarController aufruft, und ermitteln Sie den Verweis anhand eines Segments oder ähnlichem.

Was für Sie arbeiten könnte, ist der Zugriff auf die tabBarController-Eigenschaft in der viewDidLoad des ersten untergeordneten UIViewController in einer Registerkarte in Ihrem TabViewController. Alle untergeordneten ViewControllers des Registerkartencontrollers besitzen diese Eigenschaft.

Zum Beispiel ersten UIViewController im tabBar angezeigt unter der Annahme MyViewController, so etwas wie dies auszuführen:

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

Wenn Sie es von einem der Ansichten

//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; 
Verwandte Themen