【问题标题】:MvvmCross Navigation StructureMvvmCross 导航结构
【发布时间】:2013-11-20 02:58:44
【问题描述】:

我学习了大部分 MvvmCross 教程,我认为我已经准备好开始我的第一个 iOS 项目了。但是,我在尝试实现导航结构的第一个小时内就卡住了。

这是我想要实现的目标:

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

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

//authentication code here...

ShowViewModel<MainViewModel>();

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

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

谢谢!

【问题讨论】:

    标签: c# ios xamarin.ios mvvmcross


    【解决方案1】:

    您可以进入您的 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>();
            }
        }
    }
    

    【讨论】:

    • 这只是我应用程序中的一个类。与 MvvmCross 无关。
    【解决方案2】:

    如果您使用的是 UINavigationController,则可以使用以下方法将启动画面从视图堆栈中弹出:

    NavigationController.PopViewControllerAnimated(true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多