viewWIllTransition 没有在多个 Controller 中被调用

viewWIllTransition is not getting called in more than one Controller

我正在学习开发 iOS 应用程序,目前我有 4 个视图控制器。

第一个viewController中,我使用方法viewWillTransition在运行时调整UI。

再次在 第 4 ViewController 中,我正在尝试使用方法 viewWillTransition,但它没有被调用.

当我在 第一个控制器 中评论方法 (viewWillTransition) 时,它神奇地开始在 第四个 viewController[=27= 中工作].所以我得出的结论是 viewWillTransition 只能在一个地方实现 viewController 但我需要在多个地方使用它。

解决方法是什么?我该如何解决? 我正在使用 Swift4 和 Xcode9.

只是转发我的评论作为回答,

您必须在 viewWillTransition(to: with:) 的实现中的某处调用 super。通常是第一行。

它应该看起来像这样:

super.viewWillTransition(to: size, with: coordinator)

这将允许父视图将此方法class 传递给它的所有子视图。因此,如果您在 UITabBarController 中有一个 UIViewController,在 super 上调用此方法将允许所有其他选项卡接收此方法调用。

另外 -- 如果使用带有 child viewControllers 的自定义 containerViewController?

如果您已将 child viewController 的视图作为子视图添加到 parent viewController,则必须调用 .addChild(_:) 方法parent viewController 创建两个视图控制器之间的 parent-child 关系。