MvvmCross 是一个强大的页面导航框架。使用 ShowViewModel<AViewModel> 的默认导航将使用 stack 隐喻:在 Android 上一个在另一个之上,在 iOS 上相互滑动,并在任一平台上使用 返回.
您可以通过采用IMvxModalIosView 以界面标记的形式给出提示,告诉ViewPresenter 给定视图是模态的。
在视图级别
采用IMvxModalIosView 协议:
public partial class AView : MvxViewController, IMvxModalIosView
在 AppDelegate 级别
将var setup = new Setup(this, Window) 替换为:
var presenter = new MvxModalSupportIosViewPresenter(this, Window);
var setup = new Setup(this, presenter);
setup.Initialize();
在 ViewModel 级别
无需更改。 ViewModel 实际上并没有意识到模态表示。调用:
ShowViewModel<AViewModel> // May be modal on certain platforms
要关闭页面并返回上一个页面,无论您的演示风格如何,请在该 ViewModel 上使用 Close(this)。这将关闭一个模态对话框,或pop一个推送视图。一个完整的、可绑定的ICommand 可能如下所示:
public ICommand BackCommand {
get { return new MvxCommand(() => Close(this)); }
}
注意:在 MvvmCross 4.2.2 中,Touch 已重命名为 iOS,所以 IMvxModalTouchView 现在是 IMvxModalIosView。新的using 是:
using MvvmCross.iOS.Platform;
using MvvmCross.iOS.Views.Presenters;