【问题标题】:viewWIllTransition is not getting called in more than one ControllerviewWIllTransition 没有在多个控制器中被调用
【发布时间】:2018-02-18 07:12:32
【问题描述】:

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

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

再次在 第 4 个 ViewController 中,我尝试使用方法 viewWillTransition,但它没有在那里被调用。

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

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

【问题讨论】:

  • 你在viewWillTransition(to: with:)上给super打电话了吗?你的方法实现的第一行应该是super.viewWillTransition(to: size, with: coordinator)
  • 没有。非常感谢山姆 :)。我只在一个地方打电话给超级......
  • 现在可以用了吗?
  • 就像一个魅力... :)

标签: ios swift viewwilltransitiontosize


【解决方案1】:

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

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

它应该看起来像这样:

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

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

【讨论】:

    【解决方案2】:

    还有——如果使用带有子视图控制器的自定义 containerViewController?

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

    【讨论】:

      猜你喜欢
      • 2015-03-12
      • 2016-12-03
      • 2018-09-19
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多