我正在开发一个 iOS 应用程序,在该应用程序中,我使用的是标签栏控制器。并且从标签栏控制器中导航到另一个视图控制器。在推送视图控制器之前,我正在设置该控制器的属性
viewController.hidesBottomBarWhenPushed = YES;
我正在导航到另一个底部有标签栏的视图控制器。
问题是当我将视图控制器弹出回视图控制器时,选项卡栏也会出现在该视图中。弹出视图控制器时有没有办法隐藏标签栏?
如果有人可以帮助我解决这个问题,那就太好了。
提前致谢。
我正在开发一个 iOS 应用程序,在该应用程序中,我使用的是标签栏控制器。并且从标签栏控制器中导航到另一个视图控制器。在推送视图控制器之前,我正在设置该控制器的属性
viewController.hidesBottomBarWhenPushed = YES;
我正在导航到另一个底部有标签栏的视图控制器。
问题是当我将视图控制器弹出回视图控制器时,选项卡栏也会出现在该视图中。弹出视图控制器时有没有办法隐藏标签栏?
如果有人可以帮助我解决这个问题,那就太好了。
提前致谢。
在这种情况下 viewWillAppear 方法将很有用。在您的 firstviewcontroller 中输入此代码
-(void)viewWillAppear:(BOOL)animated
{
self.tabBarController.tabBar.hidden = YES;
}
因此,当 secondviewcontroller 弹出时,它将调用此方法,并且您的底栏将被隐藏。
单击后退按钮时放置它
[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;
}
您可以改为在选项卡栏控制器上显示第二个视图控制器。如果你想让第二个视图控制器有一个导航栏,你可以把它放在一个新的导航控制器中。
如果这种方式不能解决您的问题,您可以构建一个自定义标签栏控制器,以便它可以位于导航控制器内。您可以将第二个视图控制器推送到该导航控制器。要创建自定义标签栏控制器,您可以参考Apple 文档中的创建自定义容器视图控制器。我认为它在 iOS 5 及更高版本上运行良好。
取决于您的应用程序的设计,您可以将中心对象设置为导航控制器的委托。并隐藏/显示标签栏。这个问题隐藏了BottomBarWhenPushed,但是当弹出时也提供了一个解决方案,但是我不喜欢。顺便说一句,当用户浏览到第二级或更深层次时,再次显示底栏并不常见。