C# MvvmCross导航结构
我浏览了大多数MvvmCross教程,我认为我已经准备好开始我的第一个iOS项目了。然而,在尝试实现导航结构的第一个小时内,我就被卡住了 以下是我努力实现的目标: 1) 当应用程序首次加载时,它需要显示带有登录和注册按钮的启动屏幕。 2) 只有在登录或注册后,用户才能转到主视图 我尝试在视图模型中使用以下命令执行此操作:C# MvvmCross导航结构,c#,ios,xamarin.ios,mvvmcross,C#,Ios,Xamarin.ios,Mvvmcross,我浏览了大多数MvvmCross教程,我认为我已经准备好开始我的第一个iOS项目了。然而,在尝试实现导航结构的第一个小时内,我就被卡住了 以下是我努力实现的目标: 1) 当应用程序首次加载时,它需要显示带有登录和注册按钮的启动屏幕。 2) 只有在登录或注册后,用户才能转到主视图 我尝试在视图模型中使用以下命令执行此操作: //authentication code here... ShowViewModel<MainViewModel>(); //此处的身份验证代码。。。 Sho
//authentication code here...
ShowViewModel<MainViewModel>();
//此处的身份验证代码。。。
ShowViewModel();
问题是,当它导航到主视图时,用户可以按下顶部的后退按钮,返回登录屏幕,然后再次按下后退按钮返回初始屏幕
我找到的解决方案是使用MainView作为启动视图,启动屏幕应该是它上面的一个面板,当用户通过身份验证时,该面板将不可见。但我不知道这是否是这种情况下的常见做法
谢谢 您可以进入应用程序类,更改应用程序启动后加载的视图模型
public class App : Cirrious.MvvmCross.ViewModels.MvxApplication
{
public override void Initialize()
{
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
Globals.Init().Wait();
if (Globals.HasCredentials())
{
RegisterAppStart<ViewModels.DispatchListViewModel>();
}
else
{
RegisterAppStart<ViewModels.WelcomeViewModel>();
}
}
}
公共类应用程序:cirries.MvvmCross.ViewModels.MvxApplication
{
公共覆盖无效初始化()
{
createabletypes()
.以“服务”结尾
.a接口()
.registeraslazyingleton();
Globals.Init().Wait();
if(Globals.HasCredentials())
{
RegisterAppStart();
}
其他的
{
RegisterAppStart();
}
}
}
如果您使用的是UINavigationController,则可以使用以下方法从视图堆栈弹出启动屏幕:
NavigationController.PopViewControllerAnimated(true);
这只是我应用程序中的一个类。这与MvvmCross无关。