在呈现viewControllers时出现问题

时间:2014-03-13 10:12:51

标签: ios objective-c uiviewcontroller uinavigationcontroller appdelegate

我有configurationControllerVCloginPageControllerVC。最初我想呈现configurationControllerVC。配置程序完成后,我转到loginControllerVC。如果配置已经完成并且用户重新打开应用程序,我想立即加载loginControllerVC,而无需完成配置过程。

问题是在我的应用程序中,有一个条件,如果它是假的,我想把用户带回configurationControllerVC

我的viewControllers流程如下:

如果配置尚未完成:

ConfigurationControllerVC --> LoginControllerVC --> HomePageControllerVC --> ReportingControllerVC.

如果配置已完成,则流程如下:

LoginControllerVC --> HomePageControllerVC --> ReportingControllerVC.

我可能会在configurationControllerVCHomePageControllerVC上遇到我要将用户导航到reportingControllerVC的条件。

在这种情况下哪个更好?使用UINavigationController或只是将视图一个在另一个之上?另外,如何实现将用户导航回configurationControllerVC

的这一部分

目前,我正在使用此代码在configurationControllerVC中显示LoginControllerVCappDelegate

if ([self checkForConfiguration]) {

 // Initiate initial screen
    ConfigurationController *configurationController = [[ConfigurationController alloc] initWithNibName:@"ConfigurationPage"
                                                                                                 bundle:nil];

    [self.window setRootViewController:configurationController];
}else{

    LoginController *loginController = [[LoginController alloc] initWithNibName:@"LoginPage" bundle:nil];

    [self.window setRootViewController:loginController];
}

看过这些链接,但我的情况都没有:

  1. Changing root view controller of a iOS Window
  2. UINavigation pushing a new root controller

2 个答案:

答案 0 :(得分:1)

为什么不创建一个UINavigationController,其中loginController是rootViewController,然后您可以转到homePageControllerreportingController

如果[self checkForConfiguration]满足您的条件,请将其显示在UINavigationController的顶部?

[self.navigationController presentViewController:configViewController animated:YES completion:nil];

答案 1 :(得分:0)

我和@Jeff一起使用UINavigationController作为窗口根视图控制器。

对于您的“特殊”转换(配置 - >登录,登录 - >主页,任何 - >配置,因为您不希望用户能够返回),而不是使用推送或弹出,使用setViewControllers:animated:。你会得到一个漂亮的动画,取代导航控制器的根视图控制器。

为您的家 - >报告你可以照常按下导航控制器堆栈。