视图不在窗口层次结构中

Posted

技术标签:

【中文标题】视图不在窗口层次结构中【英文标题】:View is not in the window hierarchy 【发布时间】:2014-08-24 04:29:18 【问题描述】:

我在 ios 8 最新测试版中遇到了一个奇怪的问题。 我的视图正在从与 iOS7 相反的窗口层次结构中消失 - 基本上我在某个时候用新的 UINavigationController 替换。 这段代码在 iOS 8 之前没有问题,知道为什么吗? 如果我将UINavigationController 添加到keyWindow - 它实际上绕过了这个问题并且视图实际上“停留”在窗口层次结构中:

[[[UIApplication sharedApplication] keyWindow] addSubview:myUINavigationController];

但我不喜欢这种“黑客”。

【问题讨论】:

你之前是怎么做的? 好吧,我正在分配一个新的视图控制器,然后我使用 presentViewController 来显示它。 您是否尝试过将新的视图控制器分配给您的 Windows 的 rootViewController 属性? 不,我会试试的。但为了清楚起见 - 你的意思是不使用 presentViewController ? 实际上这个 UINavigationController 不应该是我的应用程序的根视图控制器 - 我们有一些其他的 viewconroller 应该是根视图控制器。 【参考方案1】:

我认为您在 AppDelegate 的 didFinishLaunchingWithOptions 方法中寻找的是这个:

self.window.rootViewController = myUINavigationController;

【讨论】:

正如我在上面的 cmets 中所写, UINavigationController 不应该是我的应用程序的根视图控制器 - 我们有一些其他的 viewconroller 应该是根视图控制器。 这有什么意义?你的用例是什么?为什么不以模态方式呈现呢? 我实际上使用 presentModalViewController(弃用后的 presentViewController)以模态方式显示它,但由于某种原因,视图已从窗口层次结构中删除 - 请注意,在较低的 iOS 版本中情况并非如此... 另外,在 iOS8 中展示一个模态视图控制器对我来说效果很好。显示一些代码,你可能在其他地方做错了。 我的意思是我使用的是 presentViewController 而不是 presentModalViewController

以上是关于视图不在窗口层次结构中的主要内容,如果未能解决你的问题,请参考以下文章

presentViewController 警告视图不在窗口层次结构中

视图不在窗口层次结构错误中

Swift 3 尝试呈现其视图不在窗口层次结构中

尝试呈现 * 其视图不在窗口层次结构中

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController