MvvmCross导航结构

时间:2013-11-20 02:58:44

标签: c# ios xamarin.ios mvvmcross

我浏览了大部分MvvmCross教程,我认为我已经准备好开始我的第一个iOS项目了。但是,在尝试实施导航结构的第一个小时内,我陷入了困境。

这就是我想要实现的目标:

1)首次加载应用时,需要显示带有登录和注册按钮的启动画面。 2)只有在登录或注册后,用户才能进入主视图。

我尝试使用视图模型中的命令执行此操作,如:

//authentication code here...

ShowViewModel<MainViewModel>();

这个问题是,当它导航到主视图时,用户可以按下顶部的后退按钮并返回到登录屏幕,然后按后退按钮返回启动画面试。

我找到的解决方案是使用MainView作为启动视图,Splash屏幕应该是一个面板,当用户通过身份验证时,该面板变得不可见。但我不知道这是否是这种情况的常见做法。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以进入App类并更改应用启动时加载的视图模型。

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>();
        }
    }
}

答案 1 :(得分:0)

如果你正在使用UINavigationController,你可以使用以下命令从视图堆栈中弹出启动画面:

NavigationController.PopViewControllerAnimated(true);