Mik*_*tar 31 iphone objective-c
我有一个在xcode中创建的基本项目作为"标签栏应用程序",如果BOOL x为真,我希望将应用程序加载切换到第二个标签.
现在我有:(位于viewDidLoad中的FirstViewController.m)
if(x){
[self.tabBarController setSelectedIndex:1];
}
Run Code Online (Sandbox Code Playgroud)
这会导致页面底部的选定选项卡突出显示第二个选项卡,但视图仍然是第一个选项卡的视图.
我如何将视图更改为第二个选项卡的视图?
Mat*_*ing 48
好吧,我重现了你的问题,并通过将切换逻辑从-viewDidLoad移动到-viewDidAppear:来解决它.基本上,改变:
- (void)viewDidLoad {
// Other code...
if(x){
[self.tabBarController setSelectedIndex:1];
}
}
Run Code Online (Sandbox Code Playgroud)
至:
- (void)viewDidAppear:(BOOL)animated {
// Other code...
if(x){
[self.tabBarController setSelectedIndex:1];
}
}
Run Code Online (Sandbox Code Playgroud)
现在,至于为什么会出现这种情况,我只能在没有更多挖掘的情况下猜测它与订单的初始化有关.在父标签栏控制器完成自己的初始化之前,可能会调用视图控制器的viewDidLoad.暂停直到您的视图实际出现确保一切都已加载并处于一致状态.
假设您正在使用作为UITabBarController的子类的控制器,您只需要设置selectedIndex属性.
例如:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.selectedIndex = 1;
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢在viewDidLoad方法中执行此赋值,因此可以保证只显示所选索引处的视图控制器.如果使用viewDidAppear函数,则会在标签栏视图加载之前看到索引0处的视图控制器短暂显示,然后显示索引1处的视图控制器.
归档时间: |
|
查看次数: |
42273 次 |
最近记录: |