隐藏标签栏和导航栏
Posted
技术标签:
【中文标题】隐藏标签栏和导航栏【英文标题】:hide tabbar and navigation bar 【发布时间】:2014-05-25 20:53:04 【问题描述】:这是我的设置: 应用程序启动时主屏幕有 4 个按钮。每个按钮都将您带到一个新的视图/子视图。每个子视图都有一个后退按钮(通过导航控制器)带您回到主/菜单屏幕。很容易。而且效果很好。但是,这是我想要做的: 主屏幕有 4 个按钮到 4 个不同的视图。在主屏幕上,您看到的只是主页/菜单,没有标签。但是,当您转到 4 个视图选项中的任何一个时,将出现一个选项卡栏,其中填充有 4 个子视图的选项卡。如果我们想返回主菜单,还会有一个导航栏。
本质上是这样:主菜单显示没有标签栏。 4 个子视图显示标签栏和导航栏。我搞砸了一堆东西,但无法让它工作。关于如何做到这一点的任何想法?
【问题讨论】:
【参考方案1】:你可以通过让你的故事板看起来像这样来实现这一点:
然后在YourMainMenuViewController
的实现中:
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
UITabBarController *tabVC = segue.destinationViewController;
if ([segue.identifier isEqualToString:@"Tab1"])
tabVC.selectedIndex = 0;
else if ([segue.identifier isEqualToString:@"Tab2"])
tabVC.selectedIndex = 1;
else if ([segue.identifier isEqualToString:@"Tab3"])
tabVC.selectedIndex = 2;
else if ([segue.identifier isEqualToString:@"Tab4"])
tabVC.selectedIndex = 3;
虽然我建议不要将标签栏控制器放在像这样的导航控制器中,因为它有点令人困惑的 UI。
【讨论】:
哇。 @DrBeardFace,如果我能拥抱你,我会的。非常感谢。这有效!并花时间绘制图表。苹果会因为这样做而拒绝应用商店中的这个应用吗? @Srmuhs 没问题!很难说苹果是否会因为这样的事情拒绝你的应用程序。我的意思是,它似乎工作得很好,但是pushViewController:animated:completion:
的official documentation 说“要压入堆栈的视图控制器 [...] 不能是标签栏控制器。”因此,如果我是你,我实际上可能会考虑完全放弃主菜单视图控制器,而只使用持久标签栏控制器,以确保安全。【参考方案2】:
在 viewWillAppear 上显示 navigationBar 实现这个
[self.navigationController setNavigationBarHidden:NO];
在 viewWillAppear 上显示 tabBar 实现这个
self.tabBarController.tabBar.hidden = NO;
您可以将它们设置为 YES 以使它们隐藏在 viewWillAppear 的菜单中
希望对你有帮助
【讨论】:
以上是关于隐藏标签栏和导航栏的主要内容,如果未能解决你的问题,请参考以下文章