Monotouch UITabBarController + UINavigationController

时间:2011-07-01 14:30:00

标签: iphone xamarin.ios monodevelop

我试图在MonoTouch中同时使用UITabBarController和UINavigationController,我有点失落。

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

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

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

我应该使用this.View.AddSubView吗?这个想法听起来像一个对话框,我只是不确定如何使用monoTouch ......

3 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分:3)

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

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

点击FooSettings中的Add Foo时,您将在第二个标签内推送新控制器。

答案 2 :(得分:0)

另一种方法是使用故事板来创建屏幕。使用带有UINavigationController的UITabBarController非常容易。你只需要在它们之间创建segues。花了几个小时就可以在几秒钟内完成。此外,通过使用故事板,您可以非常快速地重新排列视图和标签没有编写代码;使其更易于维护。