2011-07-01 57 views
7

我正在尝试在MonoTouch中同时使用UITabBarController和UINavigationController。Monotouch UITabBarController + UINavigationController

我可以创建一个基于导航的项目,并只使用navigationController进行导航,很好。或者我可以添加一个tabBarController并导航到几个主屏幕,很好。

但是,我似乎无法导航到另一个不使用TabBarController如果存在。例如,我正在做一个处理“foo”的应用程序,所以我在我的tabbar,FooHome和FooSettings上有两个视图。如果用户点击FooSettings视图中的“Add Foo”,我如何导航到新视图。

NavigationController.PushToView似乎没有任何效果,并且我不想将视图添加到tabController,因为它的漂亮且简单,只有两个项目。

我应该使用this.View.AddSubView吗?想法类似于对话框的声音,我只是不知道如何用monoTouch做...

回答

3

将您的FooHome和FooSettings控制器添加到UINavigationControllers并将这些导航控制器设置为您的选项卡控制器。

因此,例如,第一个选项卡将包含一个导航控制器,其根控制器为FooHome,第二个选项卡将包含一个导航控制器,其根控制器为FooSettings。

当您点击FooSettings中的添加Foo时,您会将新控制器推入第二个选项卡。

+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非常简单。你只需在它们之间创建赛格。花费你几小时的时间可能在几秒钟内完成。另外,通过使用故事板,您可以快速重新排列视图&选项卡而无需编写代码;使其更易于维护。

相关问题