1

样品流

如何使用 MvvmCross 实现此流程?我浏览了关于 SplitView 的 N+1 教程,但它使用单个拆分视图作为带有自定义演示器的主控制器。

对于我的应用程序,它以默认演示者开头,主屏幕是主屏幕,我需要为其中一个选项显示拆分视图。这可以使用默认的 UISplitViewController 吗?或者我需要创建一个自定义控件吗?用户还需要导航回主屏幕。

4

1 回答 1

3

MvvmCross 演示器的界面非常小。

N=24 视频的拆分视图示例是:

public class SplitPresenter : MvxBaseTouchViewPresenter
{
    private SplitViewController _svc;

    public SplitPresenter(UIWindow window)
    {
        _svc = new SplitViewController();
        window.RootViewController = _svc;
    }

    public override void Show(Cirrious.MvvmCross.ViewModels.MvxViewModelRequest request)
    {
        var viewController = (UIViewController)Mvx.Resolve<IMvxTouchViewCreator>().CreateView(request);

        if (request.ViewModelType == typeof(FirstViewModel))
            _svc.SetLeft(viewController);
        else
            _svc.SetRight(viewController);
    }
}

由于这只是 C# 与 UIKit 的交互,因此它非常开放供用户扩展。

例如,您可以:

  • 扩展您的演示者以包含导航控制器和拆分视图控制器,然后您可以在显示请求期间适当地更改 RootViewController。

  • 或者您可以考虑将您的 splitviewcontroller 作为导航控制器的子级推送(这将使返回变得容易!)

  • 或者您可以考虑将您的 splitviewcontroller 保留为根控制器,并将您的登录视图显示为顶部的模式显示。

  • 或者...真的选项是开放的 - 这是 C# 加上 UIKit 的功能、灵活性和偶尔的怪癖


附注:就我个人而言,我发现一旦我开始构建更复杂的 UI,我通常会开始聚合演示职责。例如:

  • N=25演示者中,它要求拥有视图的选项卡决定在哪里显示新视图/视图模型
  • 在此操作码博客文章中,CustomPresenter 维护了已注册各种视图模型请求的片段活动主机的自定义列表(何时注册以及随后如何处理这些请求完全取决于他们)

因为这只是 C#,所以构建从一种范式(例如选项卡)更改为另一种范式(例如 splitView)的 UI 相当容易,并且这些 UI 封装得很好——它们应该照顾自己。

于 2013-07-18T10:46:04.177 回答