ios - 查看 Controller 层次结构和设备方向变化

标签 ios view controller uisplitviewcontroller

当方向发生变化并且 View Controller 随后收到更改通知时,整个 Root View 及其所有 subview 是否都会收到这些通知?我创建了一个 Root View 和该 Root View 的 subview 。 subview 的 Controller (以及此层次结构中 subview 的任何 Controller )是否接收因设备方向更改而导致的所有旋转处理?

我问这个问题是因为嵌套在这个层次结构中的是 UISplitViewController 的 View ,并且我怀疑它没有收到设备方向更改的通知。也就是说,我的 View 层次结构中基本上有类似 A -> B -> C 的内容,其中 C 是 UISplitViewController 的 View 。

最佳答案

当方向发生变化时,只有窗口的第一个 View 将与其整个层次结构一起旋转。 就 viewController 而言,第一个 View 的 viewController 将获取方向更改事件(以及 viewWill/DidAppear 事件)以及由它生成的所有 viewController。我所说的生成是指使用 uitabbarViewController 的选项卡显示的 View Controller ,或者添加到导航 Controller ,或者以模态方式显示的 View Controller 。 换句话说,如果您在层次结构中的某个位置手动将 View Controller 的 View 添加到窗口或另一个 View ,则该 View Controller 将不会收到任何事件。

请参阅:why does viewDidAppear not get triggered? 方向改变也会发生同样的情况

所以有两个可能的原因:

  • 您的 uisplitviewController 的 View 或其任何父 View 被手动添加到 View 层次结构中,而不是推送 View Controller ( View 旋转但不接收事件)
  • 您将 View 添加为窗口的第二个子窗口( View 根本不会旋转)

关于ios - 查看 Controller 层次结构和设备方向变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345576/

相关文章:

android - 如何查看android静态库的ABI?

ios - 如何禁用 UITextview 选择文本,复制/粘贴 UIMenuController 但仍然有超链接工作[不重复]

ios - UIBarButtonItem未居中

java - 以编程方式声明 View 时应用什么单位?

ios - 我如何从 UICollectionView 传递我的 id

java - 在 Android 运行时更新 View

unit-testing - 如何使用 grails 测试单个文件上传 Controller (没有 content-type= multipart/form-data)

ruby-on-rails - 访问 Controller 中的create方法时,WEBrick::HTTPStatus::LengthRequired错误

导航 Controller 之前的 iOS 初始登录 View

java - 如何在Android上定义圆形ImageView?