我有一个关于在应用启动时加载视图控制器的问题。我希望有一个条件,根据存储的核心数据值检查应用程序何时启动,如果为true,它将在堆栈中加载第二个视图控制器。如果为false,我想加载根视图控制器。我想始终保留根视图控制器,无论条件的结果是什么,我只是想跳过加载此视图,如果我的条件的结果为真并向右移动到堆栈中的第二个视图。我没有使用故事板。有没有人做过这种性质的事情呢? 现在,已经说过,这种逻辑流程是一种可以接受的解决方案。如果我尝试这样的话会在提交过程中出现问题吗?
答案 0 :(得分:2)
假设您有以下视图控制器:
UINavigationController *navigationController;
UIViewController *firstViewController;
UIViewController *secondViewController;
然后您可以编写这样的代码(编辑:根据以下评论重新编写解决方案):
if (yourCondition)
navigationController.viewControllers = @[ firstViewController, secondViewController ];
else
navigationController.viewControllers = @[ secondViewController, firstViewController ];
答案 1 :(得分:1)
在应用启动的早期,例如在-applicationDidFinishLaunchingWithOptions:
中,检查有问题的条件,如果为真,则将第二个控制器推入导航堆栈。为动画参数指定NO
,以便没有明显的过渡。
您还可以直接设置导航控制器的viewControllers
属性。如果条件为真,则将其设置为带有第一个和第二个控制器的数组,否则设置为第一个控制器。
答案 2 :(得分:0)
检查-applicationDidFinishLaunchingWithOptions:
中的条件是一种简单的方法。
但是,我们假设让AppDelegate远离复杂。执行启动操作的最佳方法,例如检查某些条件,准备数据,是创建一个LaunchViewController作为rootViewController,你可以使它看起来像你的应用程序启动图像。然后,您可以使用/不使用动画呈现任何VC,它将是用户将看到的第一个VC。
如果您需要更多帮助,请与我联系。