gpt4 book ai didi

ios - 模态 ViewController 内的 Youtube 视频,奇怪的崩溃 'UIViewControllerHierarchyInconsistency'

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:59:55 25 4
gpt4 key购买 nike

我在 iPad 5.0 上遇到奇怪的崩溃问题。此崩溃仅发生在 iOS 5.0 和带有模态 ViewController 的 iPad 上,并且 ViewControler 样式设置为全屏以外的任何内容,这工作正常。

我包含了一个代码示例。如果您运行它并按下 Pagesheet 按钮,将出现一个带有 UIWebView 和 Youtube 视频的窗口。视频开始后,按“全屏”触发错误。 (仅适用于 iOS 5,适用于 iOS 4.x)。

如果您按下全屏按钮,唯一的区别是我为模态 UIViewController 使用全屏样式并且视频播放得很好。

有没有人知道解决方法或更好的解决方案?

由于未捕获的异常“UIViewControllerHierarchyInconsistency”原因而终止应用程序:“ subview Controller :”UIViewController:0x85d5e00“应该有父 View Controller :”NewsTableViewController:0x855f7b0“但请求的父 View 是:”MPInlineVideoViewController:0x85d3a20“

源代码(Dropbox)http://db.tt/xqMbeYP1

最佳答案

这不是部分 UIWebView 的错误。

发生的事情是 Apple 最终对其维护应用程序 View 层次结构的方式变得更加严格。在 iOS 5.x 之前,开发人员能够从一个层次结构中删除 View 并将其添加到另一个层次结构中。最好的例子就是应用程序的主视图层次结构;当呈现一个模态视图 Controller 时,这个模态视图 Controller 有它自己的 View 层次结构,它不是应用程序 View 层次结构的一部分;因此,如果模态视图 Controller 有一个 subview 并且在该 View 中它说了一个电影(恰好也是一个 View )并且这部电影要最大化,那么电影的 View 将从模态视图 Controller 的层次结构中删除并且添加到应用程序的 View 层次结构中...

application                                              modal view controller
| |
| |
window view
| |
| |
|---------------- ------------------
| | | |
| | | |
subview 1 subview 2 subview 3 movie

可以看出,模态视图 Controller 的 View 层次位于应用程序的 View 层次之外,这在 iOS 5.x 之前不是问题,因为当呈现模态视图 Controller 并且影片最大化时,Apple做了以下事情:

application                                              modal view controller
| |
| |
window view
| |
| |
|------------------------- ------------
| | | |
| | | |
movie subview 1 subview 2 subview 3

电影出现在所有其他 View 之上。在 iOS 5.x+ 中不再是这种情况,这样做是错误的,您将看到之前遇到的错误。

为了解决这个问题,您需要通过不将 View Controller 呈现为模态视图 Controller ,将模态视图 Controller 的 View 添加到应用程序的 View 层次结构中,然后将 View Controller 的 View 添加到应用程序的层次结构中如下:

                                                          application
|
|
modal view controller window
| |
| |
---------------------------------------------------------------
| | |
| | |
view subview 1 subview 2
|
|
-------------------
| |
| |
subview 3 movie

从现在开始,每个人都需要从一开始就真正思考如何正确构建 View 层次结构以及它们将如何相互交互,以及这些大型项目中 future 的可扩展性。

Apple 在 2011 年 WWDC 期间详细记录了此问题。它在第 102 节中讨论。

关于ios - 模态 ViewController 内的 Youtube 视频,奇怪的崩溃 'UIViewControllerHierarchyInconsistency',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com