在我的iOS应用中,我有一个UITabBarController
,其viewControllers
列表看起来像[vc1, vc2]
,分别属于MyVC1
和MyVC2
类,两个子类UIViewController
。 MyVC1
覆盖viewWillAppear
,覆盖的版本会打印一些东西,所以我知道它何时被调用。 (这是为了隔离我遇到的一个更大的问题,这是一个没有出现的观点。)
我的问题是,当应用首次启动并且vc1
是所选标签时,不会打印任何内容,这意味着它的viewWillAppear
未被调用。如果我切换标签然后返回vc1
,会打印一些内容,因此在我从另一个标签切换回来之前,vc1
' s viewWillAppear
没有被调用。
有没有办法在应用启动时vc1
拨打viewWillAppear
,而无需切换标签?老实说,我很惊讶这不是默认行为。
答案 0 :(得分:10)
我刚在Xcode中创建了一个新的测试应用程序,只有一个UITabViewController(及其两个子视图控制器)在Main.storyboard中,当我覆盖第一个子节点的viewWillAppear时,我的“视图将出现”每次打印日志(包括在应用程序发布时)。
以下是一些可能导致viewWillAppear无法调用的事情:
您也可以尝试查看是否为您的UITabBarController调用了viewWillAppear,如果没有,是否为其父级或呈现视图控制器调用它?等等,直到找到持有的位置。
答案 1 :(得分:1)
在vc1的viewWillAppear方法中使用以下行:
[super viewWillAppear:animated];
接下来,UITabBarController必须是您的初始控制器。
答案 2 :(得分:0)
在UITabBarController中的viewwillapear中确保具有super.viewWillAppear(animated),如以下代码
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
答案 3 :(得分:0)
如果您具有Custom UITabBarController,请检查覆盖func viewWillAppear是否为超级调用
在自定义UITabBarController中
group_by