我有一个在xcode中创建的基本项目,称为“标签栏应用程序”,如果BOOL x为true,我想将加载的应用程序切换到第二个选项卡。
现在我有:(位于viewDidLoad中的FirstViewController.m中)
if(x){
[self.tabBarController setSelectedIndex:1];
}
这会导致页面底部的选定选项卡突出显示第二个选项卡,但是 View 仍然是第一个选项卡的 View 。
如何将 View 更改为第二个选项卡的 View ?
最佳答案
好吧,我转载了您的问题,并通过将切换逻辑从-viewDidLoad移至-viewDidAppear:来解决了该问题。因此,基本上,更改:
- (void)viewDidLoad {
// Other code...
if(x){
[self.tabBarController setSelectedIndex:1];
}
}
至:
- (void)viewDidAppear:(BOOL)animated {
// Other code...
if(x){
[self.tabBarController setSelectedIndex:1];
}
}
现在,关于为什么会这样,我只能不加挖掘地猜测,它与事物初始化的顺序有关。在父选项卡栏 Controller 完成其自身的初始化之前,可能会调用 View Controller 的viewDidLoad。一直等到您的 View 真正出现之前,可以确保所有内容均已加载并且处于一致状态。