我正在开发一款iOS应用程序,在该应用程序中,我正在使用选项卡控制器。从选项卡控制器中导航到另一个视图控制器。在推送视图控制器之前,我设置了该控制器的属性。
viewController.hidesBottomBarWhenPushed = YES;
我正在导航到另一个视图控制器,该控制器在底部有选项卡栏。
问题是当我从该视图控制器返回时,选项卡栏也出现在该视图中。 有没有办法在弹出视图控制器时隐藏选项卡栏?
如果有人能帮我解决这个问题,那就太好了。
提前感谢。
我正在开发一款iOS应用程序,在该应用程序中,我正在使用选项卡控制器。从选项卡控制器中导航到另一个视图控制器。在推送视图控制器之前,我设置了该控制器的属性。
viewController.hidesBottomBarWhenPushed = YES;
我正在导航到另一个视图控制器,该控制器在底部有选项卡栏。
问题是当我从该视图控制器返回时,选项卡栏也出现在该视图中。 有没有办法在弹出视图控制器时隐藏选项卡栏?
如果有人能帮我解决这个问题,那就太好了。
提前感谢。
-(void)viewWillAppear:(BOOL)animated
{
self.tabBarController.tabBar.hidden = YES;
}
当第二个视图控制器弹出时,它将调用此方法并隐藏底部栏。
viewController.hidesBottomBarWhenPushed = YES;
2 次。首先在 viewDidLoad
方法中,其次在 viewWillAppear
方法中。 - Dilip ManekviewController.hidesBottomBarWhenPushed = YES;
放在viewDidLoad
方法中,将self.tabBarController.tabBar.hidden = YES;
放在viewWillAppear
方法中,这将解决你的问题。 - Dilip Manek在点击返回按钮时,请放置此代码
[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.hidesBottomBarWhenPushed
,根据需要将其设置为YES
或NO
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.hidesBottomBarWhenPushed = YES;
}
- (void)viewDidDisappear:(BOOL)animated
{
self.hidesBottomBarWhenPushed = NO;
}
根据您的应用程序设计,您可以将中心对象设置为导航控制器的代理。并隐藏/显示选项卡栏。这个问题hidesBottomBarWhenPushed but when popped也提供了一个解决方案,但我不喜欢。顺便说一下,当用户浏览到第二层或更深层时,重新显示底部栏并不常见。
你可以在选项卡控制器上呈现第二个视图控制器。如果你想让第二个视图控制器有一个导航栏,你可以把它放在一个新的导航控制器里面。
如果这种方式不能解决你的问题,你可以构建一个自定义的选项卡控制器,使其可以在导航控制器中。你可以将第二个视图控制器推到该导航控制器中。要创建自定义选项卡控制器,你可以参考Apple文档关于创建自定义容器视图控制器。我认为它在iOS 5及以上版本上运行良好。