首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xcode-7.0.1:不鼓励在分离的视图控制器上显示视图控制器

Xcode-7.0.1:不鼓励在分离的视图控制器上显示视图控制器
EN

Stack Overflow用户
提问于 2015-10-16 13:20:10
回答 1查看 966关注 0票数 0

我在故事板中有一个UITabBarController,它有一个导航控制器作为选项卡条项之一。当我尝试在导航控制器的根视图控制器上执行[self presentViewController:myVC animated:YES completion:NULL]时,应用程序停止响应,并在控制台上得到以下错误/警告

代码语言:javascript
运行
复制
2015-10-16 18:21:40.175 My_App[1224:488753] Presenting view controllers on detached view controllers is discouraged <MyViewController: 0x16512b00>.

只有当应用程序是使用Xcode-7.0.1构建并在iOS-9上运行时,我才会遇到这个问题。它在使用Xcode-7.0.1的iOS-8上工作得很好,甚至在使用Xcode 6.4构建的iOS-9上也是如此。

编辑:

这是我的视图控制器层次结构,就在我展示来自myVCmyRootViewController之前。

代码语言:javascript
运行
复制
(lldb) po [UIViewController _printHierarchy]
<LibraryTabBarController 0x7f91935e9660>, state: appeared, view: <UILayoutContainerView 0x7f9195841420>
   | <UINavigationController 0x7fe46b863200>, state: appeared, view: <UILayoutContainerView 0x7fe46b54c6a0>
   |    | <MyRootViewController 0x7fe46b47aa40>, state: appeared, view: <UIView 0x7fe46b66f8a0>
   | <MyOtherViewController 0x7f919580fd80>, state: disappeared, view:  (view not loaded)
EN

回答 1

Stack Overflow用户

发布于 2015-10-16 13:32:52

错误消息表明,您从视图控制器中呈现的视图控制器在视图控制器层次结构中(还没有)。也许您已经实例化了self引用的视图控制器,但尚未将其添加到选项卡的视图控制器集合中。也许你正试图在prepareForSegue中做到这一点。也许您为子视图控制器执行了addSubview,但忽略了执行必要的视图控制器包含调用(例如,addChildViewController)。可能会有很多问题。我建议您先描述一下self本身是如何出现的,然后再考虑它如何显示其他视图控制器。

如果您认为self已经在视图控制器层次结构中,我建议我们确认这一点。从Xcode运行该应用程序,在您进入显示VC的代码行之前,请按调试器的暂停按钮:

(lldb)提示符下,输入:

代码语言:javascript
运行
复制
po [UIViewController _printHierarchy]

或者,如果您在Swift帧中暂停,您可以输入:

代码语言:javascript
运行
复制
expr -l objc++ -O -- [UIViewController _printHierarchy]

你应该看到这样的东西:

代码语言:javascript
运行
复制
(lldb) po [UIViewController _printHierarchy]
<UITabBarController 0x7fcae1c19740>, state: appeared, view: <UILayoutContainerView 0x7fcae1c26730>
   | <UINavigationController 0x7fcae3012c00>, state: appeared, view: <UILayoutContainerView 0x7fcae1d10b90>
   |    | <MyApp.ViewController 0x7fcae1c19cd0>, state: appeared, view: <UIView 0x7fcae1c2c470>
   | <SecondViewController 0x7fcae1e1b860>, state: disappeared, view:  (view not loaded)

确认self在您的问题中引用的任何视图控制器都出现在视图控制器层次结构中。如果是这样,请向我们展示您的视图控制器层次结构和哪个self

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

https://stackoverflow.com/questions/33171566

复制
相关文章

相似问题

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