Ort*_*ntz 6 cocoa-touch uiviewcontroller uipopovercontroller ios
你能想到为什么Apple选择将UIPopoverController实现为普通的NSObject子类的特殊原因吗?对我来说,一个UIViewController子类会更有意义,实现适当的UIViewController包含.
但也许我没有想到的原因,为什么苹果公司聪明的工程师做出了选择?
我认为这是因为,像 UIAlertView 一样,它呈现在一个新的 UIWindow 中,因此 windowLevel 属性保证它呈现在所有内容上。
无论它是否在新的 UIWindow 中,就视图控制器包含而言,在 UIPopoverController 中呈现的视图控制器中使用复杂的父子视图控制器容器层次结构应该没有问题。我的视图控制器在Pillboxie中至少有三层嵌套,用于某些弹出窗口,没有任何问题。
更新:我通过在示例项目中记录视图层次结构前三个级别的类来检查层次结构,当弹出窗口可见时(我的根视图控制器有两个 UIButton),情况如下:
一个窗口:
_SUBVIEW类:UIView
___SUBSUBVIEW 类:UIRoundedRectButton
_ _SUBSUBSUBVIEW 类:UIButtonLabel
___SUBSUBVIEW 类:UIRoundedRectButton
_ _SUBSUBSUBVIEW 类:UIButtonLabel
_SUBVIEW 类:UIDimmingView
___SUBSUBVIEW 类:_UIPopoverView
_ _SUBSUBSUBVIEW 类:_UIPopoverStandardChromeView
_ _SUBSUBSUBVIEW 类:UIView
Apple 的文档指出,UIWindow 中的根视图控制器的视图不应具有由其他视图控制器管理的同级视图,因为这些同级视图控制器不会接收旋转事件(请参见此处,第二个项目符号)。
因此,如果 Apple 将 UIPopoverController 设为 UIViewController 子类,则必须将其添加为 rootViewController 层次结构的子/子视图。但是,如果根视图控制器(无论如何,这是您的代码)决定呈现一个干扰 UIPopoverController 视图层次结构的视图,该怎么办?苹果似乎决定完全管理 UIPopoverController 的呈现,而不是让我们把它搞砸,但这样他们就不必为自己授予 UIWindow 的无兄弟视图控制器政策的例外。
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |