8

此代码在 iOS 7 发布之前运行良好。我分配 a UIViewController, 和hidesBottomBarWhenPushedas YES, as 的rootViewControllera UINavigationController。但是 TabBar 无论如何都会显示出来。以下是相关代码:

Login *lv = [[Login alloc] init];
lv.HowToUseShows = showHowToUse;
lv.hidesBottomBarWhenPushed = YES;

UINavigationController *BokShelfNav = [[UINavigationController alloc] initWithRootViewController:lv];

//... 

UITabBarController *tbController = [[UITabBarController alloc] init];
tbController.viewControllers = @[BokShelfNav,...];

有类似问题的人吗?

4

3 回答 3

25

我发现调用方法和设置属性的顺序会影响标签栏是否显示。

如果我输入视图控制器self.hidesBottomBarWhenPushed = YES;viewDidLoad方法,我正在推动标签栏仍然显示。如果我将它移动到init方法,标签栏会像在 iOS 6 上一样隐藏。

于 2014-02-06T12:47:50.117 回答
2

The only workaround I've found is to make the tabBarController start in another tab ([tbController setSelectedIndex:1];), and then, in the viewWillAppear: method of that tab ViewController do [tbController setSelectedIndex:0];

于 2013-09-30T06:33:47.227 回答
1

我在 push 语句之后设置了 setSelectedIndex 并且它起作用了。

//created tabbar controller object

if(index==0)
    [tabbarcontroller setSelectedIndex:1];

[self.navigationcontroller pushViewcontroller:tabbarcontroller anmated:YES];
[tabbarcontroller setSelectedIndex:index];

唯一的问题是,如果您在第 0 个索引处显示控制器,它将显示。在这种情况下,我首先将 mt tabbarcontroller 的索引设置为 1(不同于 0)。及其工作。

于 2013-10-03T04:51:10.087 回答