6

我正在开发一个 iOS 应用程序,在该应用程序中,我使用的是标签栏控制器。并且从标签栏控制器中导航到另一个视图控制器。在推送视图控制器之前,我正在设置该控制器的属性

viewController.hidesBottomBarWhenPushed = YES;

我正在导航到另一个底部有标签栏的视图控制器。

问题是当我将视图控制器弹出回视图控制器时,选项卡栏也会出现在该视图中。弹出视图控制器时有没有办法隐藏标签栏?

如果有人可以帮助我解决这个问题,那就太好了。

提前致谢。

4

4 回答 4

3

在这种情况下 viewWillAppear 方法将很有用。在您的 firstviewcontroller 中输入此代码

-(void)viewWillAppear:(BOOL)animated
{
   self.tabBarController.tabBar.hidden = YES;
}

因此,当 secondviewcontroller 弹出时,它将调用此方法,并且您的底栏将被隐藏。

于 2013-04-05T07:54:01.197 回答
0

单击后退按钮时放置它

[self.tabBarController.tabBar setHidden:YES];

[UIView animateWithDuration:0.5
                     animations:^{
                         self.tabBarController.tabBar.frame = CGRectMake(self.tabBarController.tabBar.frame.origin.x, self.tabBarController.tabBar.frame.origin.y+self.tabBarController.tabBar.frame.size.height, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height);
                 }

我还有一个答案...

将这两种方法放在所有 ViewController 中并根据您的要求管理BOOL 变量 self.hidesBottomBarWhenPushedYESNO

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.hidesBottomBarWhenPushed = YES;
}
- (void)viewDidDisappear:(BOOL)animated
{   
    self.hidesBottomBarWhenPushed = NO;
}
于 2013-04-05T09:33:07.587 回答
0

您可以改为在选项卡栏控制器上显示第二个视图控制器。如果你想让第二个视图控制器有一个导航栏,你可以把它放在一个新的导航控制器中。

如果这种方式不能解决您的问题,您可以构建一个自定义标签栏控制器,以便它可以位于导航控制器内。您可以将第二个视图控制器推送到该导航控制器。要创建自定义标签栏控制器,您可以参考Apple 文档中的创建自定义容器视图控制器。我认为它在 iOS 5 及更高版本上运行良好。

于 2013-05-16T04:14:46.183 回答
0

取决于您的应用程序的设计,您可以将中心对象设置为导航控制器的委托。并隐藏/显示标签栏。这个问题隐藏了BottomBarWhenPushed,但是当弹出时也提供了一个解决方案,但是我不喜欢。顺便说一句,当用户浏览到第二级或更深层次时,再次显示底栏并不常见。

于 2013-04-08T09:32:11.043 回答