viewWillAppear不会触发属于UITabBarController的UIViewController,直到我切换标签

Bal*_*Ben 5 uitabbarcontroller uiviewcontroller ios

在我的iOS应用程序中,我有一个UITabBarController,它的viewControllers列表看起来像[vc1, vc2],它们分别是类MyVC1MyVC2两个子类UIViewController.MyVC1覆盖viewWillAppear,覆盖的版本打印一些东西,所以我知道它什么时候被调用.(这是为了隔离我遇到的一个更大的问题,这是一个没有出现的观点.)

我的问题是,当应用程序首次启动并且vc1是选定的选项卡时,不会打印任何内容,这意味着它viewWillAppear不会被调用.如果我切换标签,然后回去vc1,东西确实得到印刷,所以vc1viewWillAppear不被调用,直到我切换回它从另一个选项卡.

有没有办法在应用启动时立即vc1拨打电话viewWillAppear,而无需切换标签?老实说,我很惊讶这不是默认行为.

cha*_*oad 14

我刚刚在Xcode中创建了一个新的测试应用程序,只有一个UITabViewController(及其两个子视图控制器)在Main.storyboard中,当我为第一个子项覆盖viewWillAppear时,我的"视图将出现"每次打印日志(包括on)应用程序启动).

以下是一些可能导致viewWillAppear无法调用的事情:

  1. 没有在某个地方调用超级你已经覆盖了viewWillAppear
  2. 将视图控制器的视图作为子视图添加到某个地方,而不将视图控制器添加为子视图控制器

您也可以尝试查看是否为您的UITabBarController调用了viewWillAppear,如果没有,是否为其父级或呈现视图控制器调用它?等等,直到找到持有的位置.

  • 谢谢,我覆盖了UITabBarController的viewWillAppear,而没有在内部调用super.viewWillAppear。愚蠢的错误... (2认同)