2011-07-01 9 views
7

MonoTouchでUITabBarControllerとUINavigationControllerの両方を使用しようとすると少し迷っています。Monotouch UITabBarController + UINavigationController

私はナビゲーションベースのプロジェクトを作成し、navigationControllerのみを使用してナビゲートできます。または、私はtabBarControllerを追加し、いくつかのメイン画面にナビゲートすることができます。

ただし、TabBarControllerが存在する場合は、TabBarControllerを使用しないと別のタブにナビゲートできないようです。たとえば、私は "foo"を扱うアプリをやっているので、私はタブバー、FooHome、およびFooSettingsの2つのビューです。ユーザーがFooSettingsビューで「Add Foo」のようなものをクリックすると、新しいビューにナビゲートするにはどうすればいいですか?

NavigationController.PushToViewは効果がないようですが、TabControllerにはビューを追加したくないです。

this.View.AddSubViewを使用する必要がありますか?アイデアの種類はダイアログボックスのように聞こえますが、私はモノタッチでどうすればよいか分かりません。

答えて

3

FooHomeとFooSettingsコントローラをUINavigationControllerに追加し、これらのナビゲーションコントローラをタブコントローラに設定します。

たとえば、最初のタブにはルートコントローラがFooHomeのナビゲーションコントローラが含まれ、2番目のタブにはルートコントローラがFooSettingsのナビゲーションコントローラが含まれます。

FooSettingsでAdd Fooをタップすると、新しいコントローラが2番目のタブ内にプッシュされます。

+0

ありがとうございます。まさに私が何をしていたのか。 – Kye

14

私はこれを何時間も苦労していましたが、この投稿は役に立ちました。どうもありがとうございます。暗闇の中で、まだそれらのために少しは、ここに私のコードです:

public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
    { 
     // create a new window instance based on the screen size 
     window = new UIWindow (UIScreen.MainScreen.Bounds); 

     var vc1 = new VideosVC(); 
     var vc2 = new ScheduleVC(); 
     var vc3 = new TheCastVC(); 
     var vc4 = new MerchandiseVC(); 

     UINavigationController uinc1 = new UINavigationController(vc1); 
     UINavigationController uinc2 = new UINavigationController(vc2); 
     UINavigationController uinc3 = new UINavigationController(vc3); 
     UINavigationController uinc4 = new UINavigationController(vc4); 

     tabBarController = new UITabBarController(); 

     tabBarController.ViewControllers = new UIViewController [] { 
      uinc1, 
      uinc2, 
      uinc3, 
      uinc4, 
     }; 

     window.RootViewController = tabBarController; 

     window.MakeKeyAndVisible(); 

     return true; 
    } 
+2

+1が来てくれた皆のためにあなたのコード解決策を書いてください! – scraimer

+0

本当に、あなたのコードを投稿していただきありがとうございます。私は同じ問題を抱えていました。上記のコードは、実際には私のためにプラグアンドプレイでした。 –

0

別のアプローチは、あなたの画面を作成するためにストーリーボードを使用することです。 UINavigationControllerでUITabBarControllerを使用するのはとても簡単です。それらの間にセグを作成するだけです。時間がかかったものは数秒で完了することができました。また、ストーリーボードを使用すると、コードを書くことなくビュー&のタブを非常に素早く再配置できます。それはずっとメンテナンス可能です。

関連する問題