我有一个带有5个标签的TabBar的应用程序(常规标签栏没有自定义类)。当我启动应用程序时,左侧选项卡打开。我希望它首先打开中间的一个。我试过把
[self.tabBarController setSelectedIndex:3];
在ViewController的ViewDidLoad中首次打开但是标签没有切换。
我可以看到它突出显示但未被选中。如果我将上面的代码放在viewWillAppear
下面,它会在首次运行时被选中,但是当我不时地选择左侧标签时它会跳到中间。
也尝试了这个没有成功:
DetailsViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailsViewController"];
[self.navigationController pushViewController:vc animated:true];
我做错了什么?
答案 0 :(得分:10)
这是唯一对我有用的解决方案。在appdelegate:
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setSelectedIndex:2];
答案 1 :(得分:1)
在storyboard中将自定义类设置为tabbarController和自定义类
-(void) viewDidLoad
{
[self.tabBarController setSelectedIndex:3];
}
答案 2 :(得分:0)
需要致电
tabBarController.selectedIndex = desiredIndex;
在applicationDidLaunch内部。
答案 3 :(得分:0)
尝试在应用程序中设置它:didFinishLaunchingWithOptions:如果你的tabbar控制器是rootViewController,如
`[self.window.rootViewController.tabBarController setSelectedIndex:3];`
答案 4 :(得分:0)
我过去曾经做过一些黑客行为。我发现为了让每个标签变为活动状态,在我的applicationDidFinishLaunching中,我需要遍历所有视图控制器然后访问“view”属性:
for(viewController in arrayOfViewController)
{
// will load the view controller into memory
[viewController view];
}
不知道你是否可以使用它。