弹出视图控制器后出现标签栏

时间:2013-04-05 07:48:56

标签: ios objective-c xcode4.5

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

viewController.hidesBottomBarWhenPushed = YES;

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

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

如果有人能帮我解决这个问题会很棒。

提前致谢。

4 个答案:

答案 0 :(得分:3)

在这种情况下,viewWillAppear方法将非常有用。在你的firstviewcontroller中输入此代码

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

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

答案 1 :(得分: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.hidesBottomBarWhenPushedYES和{{ 1}} 根据您的要求

NO

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可以在标签栏控制器上显示第二个视图控制器。如果您希望第二个视图控制器具有导航栏,则可以将其放在新的导航控制器中。

如果这种方法无法解决您的问题,您可以构建一个自定义标签栏控制器,以便它可以在导航控制器内。您可以将第二个视图控制器推送到该导航控制器。要创建自定义标签栏控制器,您可以参考Apple Documentation on Creating Custom Container View Controllers。我认为它在iOS 5及更高版本上运行良好。