Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MvvmCross导航结构_C#_Ios_Xamarin.ios_Mvvmcross - Fatal编程技术网

C# MvvmCross导航结构

C# MvvmCross导航结构,c#,ios,xamarin.ios,mvvmcross,C#,Ios,Xamarin.ios,Mvvmcross,我浏览了大多数MvvmCross教程,我认为我已经准备好开始我的第一个iOS项目了。然而,在尝试实现导航结构的第一个小时内,我就被卡住了 以下是我努力实现的目标: 1) 当应用程序首次加载时,它需要显示带有登录和注册按钮的启动屏幕。 2) 只有在登录或注册后,用户才能转到主视图 我尝试在视图模型中使用以下命令执行此操作: //authentication code here... ShowViewModel<MainViewModel>(); //此处的身份验证代码。。。 Sho

我浏览了大多数MvvmCross教程,我认为我已经准备好开始我的第一个iOS项目了。然而,在尝试实现导航结构的第一个小时内,我就被卡住了

以下是我努力实现的目标:

1) 当应用程序首次加载时,它需要显示带有登录和注册按钮的启动屏幕。 2) 只有在登录或注册后,用户才能转到主视图

我尝试在视图模型中使用以下命令执行此操作:

//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无关。