我需要使用 MVVMCross 实现登录/注销,iOS 仅启动。用户登录后,我想关闭视图并使“真正的”首先查看根控制器。对于注销,我想反过来做同样的事情。每当请求 LoginViewModel 时,清除根并替换它。
这个Remove ViewController from stack表示有一个 ClearTop 参数,但看起来它在 v3 中消失了?
然后我发现这是为不同的 MvvmCross (v3) 平台处理 GoBack 的最佳方法,我实现了这个 Presenter:
public override void Close(IMvxViewModel toClose)
{
if (toClose is LoginViewModel)
{
ClearBackStack();
Show(new MvxViewModelRequest() { ViewModelType = typeof(FirstViewModel)});
return;
}
base.Close(toClose);
}
public override void Show(MvxViewModelRequest request)
{
if (request.ViewModelType == typeof (LoginViewModel))
{
ClearBackStack();
}
base.Show(request);
}
这是处理这个问题的正确方法吗?有没有更简单的机制(类似pre-v3)?我应该改写 ChangePresentation 吗?
此外,是否有从视图调用 ShowViewModel 的机制?我需要解决 IMvxViewDispatcher 还是有更直接的方法?