在标签栏的特定标签中打开应用

时间:2012-12-20 08:26:57

标签: objective-c ios tabbar

我有一个带有5个标签的TabBar的应用程序(常规标签栏没有自定义类)。当我启动应用程序时,左侧选项卡打开。我希望它首先打开中间的一个。我试过把

[self.tabBarController setSelectedIndex:3];

在ViewController的ViewDidLoad中首次打开但是标签没有切换。 我可以看到它突出显示但未被选中。如果我将上面的代码放在viewWillAppear下面,它会在首次运行时被选中,但是当我不时地选择左侧标签时它会跳到中间。

也尝试了这个没有成功:

DetailsViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailsViewController"];
[self.navigationController pushViewController:vc animated:true];    

我做错了什么?

5 个答案:

答案 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];
}

不知道你是否可以使用它。