Monotouch UITabBarController + UINavigationController - PullRequest
7 голосов
/ 01 июля 2011

Я немного растерялся, пытаясь использовать UITabBarController и UINavigationController в MonoTouch.

Я могу создать проект на основе навигации и перемещаться, используя только навигационный контроллер, хорошо.Или я могу добавить tabBarController и перейти к нескольким основным экранам, хорошо.

Однако я не могу перейти к другому без использования TabBarController, если он есть.Например, я делаю приложение, которое имеет дело с "foo", поэтому у меня есть два представления на моей вкладке, FooHome и FooSettings.Как перейти к новому представлению, если пользователь щелкнул что-то вроде «Добавить Foo» в представлении FooSettings.

NavigationController.PushToView, похоже, не имеет никакого эффекта, и я не хочу добавлятьвид на tabController, поскольку он приятный и простой с двумя элементами.

Должен ли я использовать this.View.AddSubView?Идея звучит как диалоговое окно, я просто не уверен, как это сделать с monoTouch ...

Ответы [ 3 ]

14 голосов
/ 21 декабря 2011

Я боролся с этим часами, и этот пост помог. Огромное спасибо. Для тех, кто еще в темноте немного, вот мой код:

    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;
    }
3 голосов
/ 01 июля 2011

Добавьте ваши контроллеры FooHome и FooSettings в UINavigationControllers и установите эти контроллеры навигации в свой контроллер вкладок.

Так, например, первая вкладка будет содержать контроллер навигации, корневым контроллером которого является FooHome, а вторая вкладка будет содержать контроллер навигации, корневым контроллером которого является FooSettings.

Когда вы нажимаете Add Foo в FooSettings, вы помещаете новый контроллер во вторую вкладку.

0 голосов
/ 29 марта 2012

Другой подход заключается в использовании раскадровки для создания ваших экранов.Использовать UITabBarController с UINavigationController очень просто.Вы просто создаете переходы между ними.То, что заняло у вас часы, могло быть сделано за считанные секунды.Кроме того, с помощью раскадровки вы можете очень быстро переставлять представления и вкладки без написания кода;делая его намного более легким в обслуживании.

...