Ios 切换RootViewController后modelviewcontroller处于limbo状态

Ios 切换RootViewController后modelviewcontroller处于limbo状态,ios,modalviewcontroller,presentmodalviewcontroller,Ios,Modalviewcontroller,Presentmodalviewcontroller,我想我在IOS SDK中发现了一个bug,但我不知道如何克服这个问题 大量修改我的代码 问题出在哪里? 如果我显示modal view controller,则用户会将应用程序移动到后台状态, 当用户返回应用程序时,我将rootViewController切换到另一个视图 控制器,在这里我验证用户会话并进行更多的逻辑。 完成此步骤后,我将替换原来的rootViewController。 问题是rootViewController提供的modalViewController, 隐藏/不显示。当我试

我想我在IOS SDK中发现了一个bug,但我不知道如何克服这个问题 大量修改我的代码

问题出在哪里? 如果我显示modal view controller,则用户会将应用程序移动到后台状态, 当用户返回应用程序时,我将rootViewController切换到另一个视图 控制器,在这里我验证用户会话并进行更多的逻辑。 完成此步骤后,我将替换原来的rootViewController。 问题是rootViewController提供的modalViewController, 隐藏/不显示。当我试图忽略它时,它会给我一个错误 我试图排除一种不可见的观点

当我再次尝试显示它时(例如,仅显示另一个视图控制器),当显示另一个视图控制器时,我尝试显示视图控制器会出错

因此,我不能取消模态视图控制器,也不能提供一个新的

总而言之,如果你展示了一个modalviewcontroller,那么改变你的 将rootViewController复制到另一个viewcontroller,并恢复原始rootViewController-> 任何情态动词出现的地方都处于一种模糊状态

有人能弄明白吗?除了“不要更换您的rootviewcontroller”之外,还有其他解决方案吗


非常感谢

除了“不要更换您的rootviewcontroller”之外,您为什么还要寻找其他解决方案呢。这是正确的指导。这在iOS中不是一个bug。通常,不应替换根视图控制器

听起来您真正想要的是第三个视图控制器,用作窗口的根视图控制器,并作为子视图管理主视图控制器和入口视图控制器。尝试一下,也可以学习一下如何使用视图控制器,如果您遇到麻烦,我们可以尝试提供帮助

视图控制器设计为以非常特定的方式工作,如果您误用它们,您将体验到各种不良效果。有时候你一开始会侥幸逃脱,放心吧,接下来,它会回来咬你的


假设您希望保持原来的方法,即在两个控制器之间交换,而不是使用第三个控制器来管理它们,那么您可以在从后台返回时关闭显示的视图控制器,然后再交换根视图控制器

例如,应用程序代理的in-applicationWillEnterForeground::

if (self.window.rootViewController.presentedViewController != nil) {
        // do any tear-down relating to the modally presented view controller
        // Now dismiss it.
        [self.window.rootViewController dismissViewControllerAnimated:NO
                                                           completion:nil];
    }

这将消除导致无法显示新视图控制器的错误消息的情况,因为已经显示了一个视图控制器。

如何切换根视图控制器?您是否保留指向已呈现模式的指针?从您的描述听起来,当您再次切换到控制器时,您将返回到该控制器的同一实例。是的,当转到后台时,我存储对“MainViewController”的引用,并放置一个“EnterViewController”作为rootViewController。在我完成入口视图控制器后,我将“MainViewController”恢复为rootViewController,但不幸的是,显示的模态视图控制器不可见,但仍在逻辑中。当应用程序进入后台时,有什么原因不想关闭模态视图控制器吗?这似乎是最简单的解决办法。