5

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

[self.tabBarController setSelectedIndex:3];

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

也试过这个没有成功:

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

我究竟做错了什么?

4

5 回答 5

10

这是唯一对我有用的解决方案。在 appdelegate 中:

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
[tabBar setSelectedIndex:2];
于 2012-12-28T00:48:17.057 回答
1

In storyboard set custom class to the tabbarController and in that custom class

-(void) viewDidLoad
{
    [self.tabBarController setSelectedIndex:3];
}
于 2012-12-20T09:30:10.103 回答
0

我过去做过一些骇人听闻的事情。我发现为了让每个选项卡都处于活动状态,在我的 applicationDidFinishLaunching 中,我需要遍历所有视图控制器,然后访问“视图”属性:

for(viewController in arrayOfViewController)
{
    // will load the view controller into memory
    [viewController view];
}

不知道能不能用得上。

于 2012-12-21T08:23:43.717 回答
0

有需要打电话

tabBarController.selectedIndex = desiredIndex;

在 applicationDidLaunch 内部。

于 2012-12-20T08:39:08.090 回答
0

尝试在应用程序中设置它:didFinishLaunchingWithOptions: 如果你的标签栏控制器是 rootViewController

`[self.window.rootViewController.tabBarController setSelectedIndex:3];`
于 2012-12-20T08:40:50.140 回答