首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切换rootViewControllers后处于边缘状态的模型视图控制器

切换rootViewControllers后处于边缘状态的模型视图控制器
EN

Stack Overflow用户
提问于 2013-05-25 22:40:49
回答 2查看 584关注 0票数 1

我想我在IOS SDK中发现了一个bug,但我不确定如何在不大量修改代码的情况下克服这个问题。

问题出在哪里?如果我呈现模式视图控制器,然后用户将应用程序移动到后台状态,当用户返回到应用程序时,我将rootViewController切换到不同的视图控制器,在那里我验证用户会话并进行一些更多的逻辑。在这一步完成之后,我替换了我原来的rootViewController。问题是rootViewController显示的modalViewController是隐藏的/不显示的。当我试图忽略它时,它会给我一个错误,那就是我试图忽略它不可见的视图。

当我试图再次呈现它(或者仅仅是另一个视图控制器)时,我错误地认为当另一个视图控制器出现时,我会尝试呈现视图控制器。

因此,我不能忽略模式视图控制器,也不能提供一个新的。

总而言之,似乎如果你呈现一个模态视图控制器,然后将你的rootViewController更改为另一个视图控制器,并恢复原始的rootViewController ->任何处于边缘状态的模态。

有谁能弄明白这一点?除了“不要替换你的rootviewcontroller”之外,还有其他的解决方案吗?

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-25 23:13:24

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

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

视图控制器被设计成以非常特殊的方式工作,如果你误用它们,你将会遇到各种各样的不良效果。有时你一开始会逃脱惩罚,放心吧,一直到最后,它都会回来咬你。

View Controller Programming Guide

票数 1
EN

Stack Overflow用户

发布于 2013-07-22 00:11:13

假设您希望保留原来的方法,即在两个控制器之间进行交换,而不是使用第三个控制器来管理它们,那么当您从后台返回时,您可以在换出根视图控制器之前取消呈现的视图控制器。

例如,在应用程序委派的-applicationWillEnterForeground:中:

代码语言:javascript
复制
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];
    }

这将消除导致无法显示新的View Controller错误消息的情况,因为已经显示了一个新的View Controller。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16750608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档