2012-01-05 8 views
4

ストーリーボード対応のiOS5アプリケーションでUITabBarControllerDelegateを作成するのが難しいです。ここでの状況は次のとおりです。ストーリーボードでTabBarControllerDelegateを作成する

  1. 私は最終的には、ログインを処理する初期画面を持っていますが、現在だけで、ユーザーに...
  2. ... 5つのタブとタブバーコントローラを送信ボタンを有しています。これらのタブのそれぞれは...
  3. ...ルートの下に多くの子ビューコントローラを持つナビゲーションコントローラ。私はいつも、ユーザがその特定のナビゲーションコントローラのルートビューコントローラに向けることにしたい

(それが助け場合は、関連するストーリーボードセクションのスクリーンショットがhereである。)

ユーザーがタブを切り替え、 、最近訪問したView Controller(デフォルトの動作)ではありません。

私が理解しているのは、herehereのようにタブが押されたときにpopToRootViewControllerAnimatedを呼び出す必要がありますが、私はストーリーボード内でそれを行う方法を理解できません。ストーリーボードを破棄せずにやり直すことなく、これをどうやって行うことができますか?

ありがとうございます!

答えて

1

あなたの問題(デザインパターンの決定事項)には複数の解決策があります。

  1. サブクラスUITabBarControllerとストーリーボードであなたのタブバーのカスタムクラスとして設定(も扱われるために、あなたのオブジェクトにデリゲートを接続)と-tabBarControllerオーバーライドします:それらのいくつかの可能性がありdidSelectViewControllerを:を呼び出してルートにデリゲートメソッド

  2. ポップを使用すると、この動作が

を実装するすべてのビューのviewWillDisappearイベントからを-popToRootViewControllerAnimated
1

あなたは次にviewDidLoadメソッドで、あなたのケースであなたNavigationControllerの識別子であろうと、ビュー・コントローラとの配列を作成し、あなたのビューコントローラ

-(UIViewController*) viewControllerWithTabTitle:(NSString*) title 
            viewController(NSString *)viewController { 

UIViewController* returnViewController = [self.storyboard 
          instantiateViewControllerWithIdentifier:viewController]; 

    return returnViewController; 
} 

をインスタンスメソッドを実装し、独自のTabBarControllerを作成することができますInterfaceBuilderで設定します。

- (void)viewDidLoad { 

    self.viewControllers= 
[NSArray arrayWithObjects: 
[self viewControllerWithTabTitle:@"Option 1" viewController:@"viewController1"], 
[self viewControllerWithTabTitle:@"Option 2" viewController:@"viewController2"], 
[self viewControllerWithTabTitle:@"Option 3" viewController:@"viewController3"], 
[self viewControllerWithTabTitle:@"Option 4" viewController:@"viewController4"], 
[self viewControllerWithTabTitle:@"Option 5" viewController:@"viewController5"], nil]; 

} 
+0

これは完全に機能しました。私は、複数のUITabBarControllersから同じタブ/ viewControllerにタブをリルートすることができたので、ストーリーボード自体が必要とするように、それらを複製する必要はありませんでした。 – barbazoo

関連する問題