Objective-c在应用程序启动后有条件地提供ViewControllers

时间:2014-02-14 17:04:55

标签: ios objective-c uiviewcontroller

我有一个关于在应用启动时加载视图控制器的问题。我希望有一个条件,根据存储的核心数据值检查应用程序何时启动,如果为true,它将在堆栈中加载第二个视图控制器。如果为false,我想加载根视图控制器。我想始终保留根视图控制器,无论条件的结果是什么,我只是想跳过加载此视图,如果我的条件的结果为真并向右移动到堆栈中的第二个视图。我没有使用故事板。有没有人做过这种性质的事情呢? 现在,已经说过,这种逻辑流程是一种可以接受的解决方案。如果我尝试这样的话会在提交过程中出现问题吗?

3 个答案:

答案 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。

如果您需要更多帮助,请与我联系。

相关问题