当发生方向更改并随后向视图控制器通知更改时,整个根视图及其所有子视图是否都会收到这些通知?我已经为该根视图创建了一个根视图和一个子视图。子视图的控制器(以及此层次结构中的任何子视图控制器)是否接收到因设备方向更改而导致的所有旋转处理?
我问,因为嵌套在这个层次结构中的是UISplitViewController的视图,我怀疑它没有收到设备方向更改的通知。即我基本上有类似A - > B - > C在我的视图层次结构中,其中C是UISplitViewController的视图。
答案 0 :(得分:1)
当方向发生变化时,只有窗口的第一个视图与其整个层次结构一起旋转。 在viewControllers方面,第一个视图的viewController将获取方向更改事件(和viewWill / DidAppear事件)以及由它生成的所有viewControllers。通过spawn我的意思是一个viewcontroller,使用uitabbarViewController的选项卡显示,或添加到导航控制器,或以模态显示。 换句话说,如果层次结构中的某个位置手动将viewcontroller的视图添加到窗口或其他视图中,则该viewcontroller将不会获得任何事件。
请参阅:why does viewDidAppear not get triggered? 方向变化也会发生同样的事情
因此有两个可能的原因: