呈现视图控制器时出现问题

Posted

技术标签:

【中文标题】呈现视图控制器时出现问题【英文标题】:Issue while presenting viewControllers 【发布时间】:2014-03-13 10:12:51 【问题描述】:

我有一个configurationControllerVCloginPageControllerVC。最初我想介绍configurationControllerVC。一旦我的配置过程完成,我去loginControllerVC。如果配置已经完成并且用户重新打开应用程序,我想立即加载loginControllerVC,而无需执行配置过程。

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

我的viewControllers流程如下:

如果配置尚未完成:

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

如果配置完成,那么流程是这样的:

LoginControllerVC --> HomePageControllerVC --> ReportingControllerVC.

我想将用户导航到configurationControllerVC 的条件可能在HomePageControllerVCreportingControllerVC 上遇到。

在这种情况下,什么更好?使用UINavigationController 还是仅将视图呈现在另一个之上?另外,如何实现将用户导航回configurationControllerVC这部分?

目前我正在使用此代码在我的appDelegate 中显示configurationControllerVCLoginControllerVC

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];

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

    Changing root view controller of a ios Window UINavigation pushing a new root controller

【问题讨论】:

【参考方案1】:

为什么不直接创建一个UINavigationController,其中loginController 是rootViewController,然后您可以在其中推送到homePageControllerreportingController

只要满足[self checkForConfiguration] 的条件,就将其显示在UINavigationController 的顶部?

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

【讨论】:

在 UINavigationController 的顶部显示 ConfigurationControllerVC 是什么意思?你能更具体一点吗?我是 ios @Jeff 的新手【参考方案2】:

我同意@Jeff 使用UINavigationController 作为窗口根视图控制器。

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

对于您的家 -> 报告您可以像往常一样推送到导航控制器堆栈。

【讨论】:

以上是关于呈现视图控制器时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 ios 7 中呈现模型视图控制器时出现状态栏问题

iOS 8 – 在设置关键窗口或关闭并立即呈现另一个视图控制器后快速呈现视图控制器时出现故障

进行模态搜索时出现错误的 ViewController(使用 ECSlidingViewController)

呈现页面时出现 UiNavigation 错误

呈现模态 UIViewController 时出现奇怪的崩溃

从视图控制器呈现导航视图 - IOS 7