Ios 在切换选项卡之前,属于UIAbbarController的UIViewController的视图将显示为不启动
在我的iOS应用程序中,我有一个Ios 在切换选项卡之前,属于UIAbbarController的UIViewController的视图将显示为不启动,ios,uiviewcontroller,uitabbarcontroller,Ios,Uiviewcontroller,Uitabbarcontroller,在我的iOS应用程序中,我有一个uitabarcontroller,它的viewControllers列表看起来像[vc1,vc2],分别属于MyVC1和MyVC2类,这两个子类都是UIViewControllerMyVC1覆盖视图将出现,被覆盖的版本将打印一些内容,以便我知道何时调用它。(这是为了隔离我遇到的一个更大的问题,即没有出现视图。) 我的问题是,当应用程序第一次启动并且选择了vc1选项卡时,不会打印任何内容,这意味着不会调用其视图。如果我切换选项卡,然后返回到vc1,某些内容确实会被
uitabarcontroller
,它的viewControllers
列表看起来像[vc1,vc2]
,分别属于MyVC1
和MyVC2
类,这两个子类都是UIViewController
<代码>MyVC1覆盖视图将出现
,被覆盖的版本将打印一些内容,以便我知道何时调用它。(这是为了隔离我遇到的一个更大的问题,即没有出现视图。)
我的问题是,当应用程序第一次启动并且选择了vc1
选项卡时,不会打印任何内容,这意味着不会调用其视图。如果我切换选项卡,然后返回到vc1
,某些内容确实会被打印出来,因此vc1
的视图将出现
,直到我从另一个选项卡切换回它为止
有没有办法让vc1
callview在应用程序启动后立即显示,而无需切换选项卡?老实说,我很惊讶这还不是默认行为。在vc1的ViewWillAspect方法中使用以下行:
[super viewWillAppear:animated];
接下来,UITabBarController必须是您的初始控制器。我刚刚在Xcode中制作了一个新的测试应用程序,在Main.storyboard中只有一个UITabViewController(及其两个子视图控制器),当我覆盖第一个子视图时,每次都会显示我的“视图”日志打印(包括在应用程序启动时)
以下是一些可能导致ViewWill无法调用的情况:
不在您已覆盖的位置调用super将出现
将视图控制器的视图添加为子视图,而不将视图控制器添加为子视图控制器
您还可以尝试查看ViewWillExample是否为您的UITabBarController调用,如果不是,是否为其父视图控制器或显示视图控制器调用?依此类推,直到找到阻塞的位置。让舒尔在UITabBarController中的视图中显示super。视图将显示(动画),如以下代码所示
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
如果您有自定义UITabBarController,请选中override func VIEWWILLISEAM is call super
在自定义UITabBarController中
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) // this line need
}
对不起,那没用。直到我从另一个选项卡切换到vc1
,它才被调用。你能发布你故事板的截图吗?谢谢你的帮助。我的uitabarcontroller
中缺少了对super的调用。如果uitabarcontroller不是我的初始控制器,我该怎么办?谢谢,我没有调用super,就覆盖了uitabarcontroller
的视图将出现。愚蠢的错误……哦,。。。我看到你的评论。