如何使用 MvvmCross 实现此流程?我浏览了关于 SplitView 的 N+1 教程,但它使用单个拆分视图作为带有自定义演示器的主控制器。
对于我的应用程序,它以默认演示者开头,主屏幕是主屏幕,我需要为其中一个选项显示拆分视图。这可以使用默认的 UISplitViewController 吗?或者我需要创建一个自定义控件吗?用户还需要导航回主屏幕。
如何使用 MvvmCross 实现此流程?我浏览了关于 SplitView 的 N+1 教程,但它使用单个拆分视图作为带有自定义演示器的主控制器。
对于我的应用程序,它以默认演示者开头,主屏幕是主屏幕,我需要为其中一个选项显示拆分视图。这可以使用默认的 UISplitViewController 吗?或者我需要创建一个自定义控件吗?用户还需要导航回主屏幕。
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,我通常会开始聚合演示职责。例如:
因为这只是 C#,所以构建从一种范式(例如选项卡)更改为另一种范式(例如 splitView)的 UI 相当容易,并且这些 UI 封装得很好——它们应该照顾自己。