2012-01-22 8 views
1

私は、初期ルートビューとしてUITabViewControllerを含むStoryboardを使ってプロジェクトをセットアップしました。タブの1つではNavigationControllerがロードされ、カスタムView Controllerクラスがロードされます。Xcode Storyboard with UITabViewController - ボタンをボタンから変更する

カスタムビューコントローラーから、ルートUITabViewControllerを最初のインデックスに戻すアクションをトリガーするナビゲーションバーボタンがあります。私は従来のxib構造体を使用してこれを行うことができました。これは、appDelegateクラスをxibに追加し、そのメソッドをボタンにリンクすることで可能になりました。

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize tabBarController=_tabBarController; 

-(IBAction)handleHome:(id)sender{ 
    //How do I send a message to the tabBarController? 
    [self.tabBarController setSelectedIndex:0]; 
} 

それはストーリーボードのアプローチでこれを行うことは可能です:

が効果的に、私はボタンが次のようになりますコードをトリガしたいですか?私はSegueを見ましたが、それは私がやろうとしているようではありません(私が見ることができるルートからUITabViewControllerに話す方法はありません)。

レスポンダアプローチを使用してhandeHomeメソッドがトリガされているので、実際にストーリーボードのインスタンス化されたtabViewControllerにアクセスする方法がわかります。

うまくいけば、この質問は理にかなっています。私が展開すべきことがあれば教えてください。

答えて

2

上の質問をする前に、より多くのコーヒーを必要とする...

@implementation AppDelegate 

@synthesize window = _window; 

-(IBAction)handleHome:(id)sender{ 

    UITabBarController *tabViewController = (UITabBarController *) self.window.rootViewController; 

    [tabViewController setSelectedIndex:0]; 

} 

ため息:私はこれに、コードの引用符で囲まれたブロックを更新しましたか?

- (IBAction)handleHome:(id)sender { 
    self.tabBarController.selectedIndex = 0; 
} 

tabBarControllerプロパティはUIViewControllerに組み込まれています。

+0

ああ、ありがとう!私はこのアプローチをもっと好む。 AppDelegateを騒がす必要はありません。 – PrairieHippo

1

私はそれを理解しました。理由だけではなく、カスタムビューコントローラでこれをしないSO

関連する問題