我们在基于MVVMCross的应用程序中有一个注册流程,用户在首次使用时必须通过该应用程序 - 在使用应用程序中的任何功能之前。
目前,我们正在第一个ViewModel的Init()中弹出注册视图,但这感觉很笨,例如:
public class HomeViewModel: MvxViewModel{
public void Init(){
if (!RegistrationComplete){
ShowViewModel<RegisterViewModel>();
}
}
}
我们考虑将RegistrationViewModel设置为AppStart,然后将“交换”应用程序设置为HomeViewModel,但我们无法确定如何完成此“交换”
在mvvmcross中完成此寄存器以继续类型行为的推荐方法是什么?
答案 0 :(得分:3)
https://github.com/MvvmCross/MvvmCross/wiki/Customising-using-App-and-Setup#custom-imvxappstart
中介绍了一种方法它使用CustomAppStart
对象:
public class CustomAppStart
: MvxNavigatingObject
, IMvxAppStart
{
public void Start(object hint = null)
{
var auth = Mvx.Resolve<IAuth>();
if (auth.Check())
{
ShowViewModel<HomeViewModel>();
}
else
{
ShowViewModel<LoginViewModel>();
}
}
}
这在app.cs中注册为:
RegisterAppStart(new CustomAppStart());