MvvmCross使用Tab中的模态ViewController

Som*_*Man 5 modal-dialog xamarin.ios viewcontroller mvvmcross

我在SO和其他地方搜索过MvvmCross和Modal,但现有的答案并没有帮助我们.

我们正在使用MonoTouch和MvvmCross开发一个跨平台的应用程序,这似乎是非常强大的组合.但是,我们在导航方面遇到了一些问题,我们正在逐渐破解!目前的问题是 -

该应用程序使用TabBarController运行,每个选项卡都有导航到更高级别 - 这很好.然而,客户端需要其中一个选项卡上的"开始"按钮以显示模态视图(隐藏其他所有内容,尤其是标签栏),然后其具有与UINavigationController相同的工作方式,具有该功能随时弹回tabBarController.

我们设法提出了一个模态视图,但我们仍然坚持从这里加载新视图并弹出.

任何帮助/建议表示赞赏!

Stu*_*art 5

我认为你要做的是自定义presenter,以便它将你的UIViewController包装在UINavigationController中 - 然后以模态方式呈现UINavigationController?

为了实现这一点,来自@DeapSquatter的最近Pull请求中的代码可能有所帮助 - https://github.com/slodge/MvvmCross/pull/9 - 我认为您可以使用他的模态导航演示器 来实现您的效果寻找:

        if (view is IMvxModalTouchView)
        {
            if (_currentModalViewController != null)
                throw new MvxException("Only one modal view controller at a time supported");

            var newNav = new UINavigationController();
            newNav.PushViewController(view as UIViewController, false);

            _currentModalViewController = view as UIViewController;

            PresentModalViewController(newNav, true);
            return;
        }
Run Code Online (Sandbox Code Playgroud)

mvvmcross的体系结构在这里是有意的可扩展和可配置的 - 虽然我们包含一些基本的Presenter类,但很可能人们想要在逐个app的基础上定制不同视图的呈现方式.除了最简单的演示应用程序之外,我预计大多数触摸的mvvmcross应用程序都会附带一个自定义的演示者.

希望有所帮助

斯图尔特