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

问题描述:

我开发一个ios应用程序,并在该应用程序即时通讯使用TabBar控制器。 并从标签栏控制器内导航到另一个视图控制器。 之前推视图控制器IM设置该控制器弹出视图控制器后出现的标签栏

viewController.hidesBottomBarWhenPushed = YES; 

和IM导航到具有在底部的标签栏的另一个视图控制器的特性。

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

如果有人能够帮助我解决这个问题,那该多好。

在此先感谢。

+0

显示代码你是如何放置tabbar的? – 2013-04-05 09:48:40

在这种情况下,viewWillAppear方法将使用满。在firstviewcontroller把这个代码

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

所以当secondviewcontroller POP操作出那么它会调用这个方法,你的底栏将被隐藏。

+0

我试过这个,但这不会工作,因为视图控制器实际上并没有被推到这一点。该场景是用户导航回来的时候。 – era 2013-04-05 08:09:05

+1

这个方法在用户导航不在用户推送另一个视图时被调用,因此你必须声明'viewController.hidesBottomBarWhenPushed = YES;'2次。首先在'viewDidLoad'方法中,第二个在'viewWillAppear'方法中。 – Dilip 2013-04-05 09:03:38

+0

我试图设置视图中的属性也没有加载..但仍然在那里的标签栏。 – era 2013-04-05 10:00:27

将这个当你点击后退按钮

[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; 
} 
+0

我也试过。事情是你可以隐藏标签栏,它留下一个空的空间在底部。当我试图将视图框架设置为全屏时,它无效。 – era 2013-04-05 09:36:08

+0

正如你所说,首先firstview有底部栏,然后推它会隐藏吗?并从推viewController弹出时,然后它应该隐藏......这是你的要求或米丢失任何 – 2013-04-05 09:42:47

+0

firstview(有底部栏) - > secondview(隐藏底部栏) - > thirdview(有底部栏) 然后即时弹出第三个视图和导航回到第二个视图底部栏是在那里..我需要摆脱它。如果我按照你的建议在底部留下了一个空白空间。 – era 2013-04-05 09:59:27

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

您可以在标签栏控制器上显示第二个视图控制器。如果你想要第二个视图控制器有一个导航栏,你可以把它放在一个新的导航控制器。

如果这样不能解决您的问题,您可以构建自定义选项卡栏控制器,以便它可以位于导航控制器中。您可以将第二个视图控制器推送到该导航控制器。要创建自定义标签栏控制器,您可以参考Apple Documentation on Creating Custom Container View Controllers。我认为它适用于iOS 5及更高版本。