2013-07-31 7 views
6

私の代理人で私はTabBarControllerを選択しようとしていますので、別の背景でそれをスタイルすることができます。 MAINVIEW(これは、次のとおりです。私はセグエ名を持つ私のTabBarControllerセットアップを持っている私のインターフェイスビルダーで私のストーリーボードの別のビューからtabbarcontrollerを取得

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

:しかし問題は...私のTabBarControllerがrootView上に配置されていないことを

私の現在のコードですTabBarControllerがある)。

どうすれば私のTabBarControllerを選択できますか?

+0

どの部分の中コードはあなたのtabBarControllerを選択しますか? TabBarの内部にあるUIViewControllerでは、APPDelegate、...? –

+0

私の最初の行にいます。私は 'self.window.rootViewController; 'をTabBarControllerに置き換えたいので、私はそれを操作することができます – Alosyius

+0

そうですが、私はあなたがちょうどそのコードを呼んでいるViewController /投稿された –

答えて

9

まず、ビュー階層内でTabBarControllerがどこにあるかを知る必要があります。あなたのルートコントローラでない場合は、TabBarControllerを呼び出すUIViewControllerを見つけ、segueなどの参照を取得します。

あなたにとってうまくいくものは、tabViewController内のタブの最初の子UIViewControllerのviewDidLoadtabBarControllerプロパティにアクセスしています。 すべて tabBarControllerの子ViewControllerにこのプロパティがあります。 MyViewControllerは、このような何かを実行さタブバーに表示された最初のUIViewControllerを想定して例えば

、:あなたはビューのいずれかからそれを取得したい場合は

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

//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; 
関連する問題