2014-05-25 197 views
0

以下是我的设置: 应用程序将启动,并带有4个按钮的主屏幕。每个按钮都会将您带到新的视图/子视图。每个子视图都有一个后退按钮(通过导航控制器)将您带回主/菜单屏幕。很简单。并且效果很好。然而,这是我想要做的: 主屏幕有4个按钮,以4个不同的视图。在主屏幕上,您看到的是主页面/菜单,无标签。但是,当您转到4个视图选项中的任何一个时,将出现一个选项卡栏,该选项卡的选项卡将填充到4个子视图。如果我们想返回主菜单,也会有一个导航栏。隐藏标签栏和导航栏

所以基本上:主菜单显示无标签栏。 4个子视图显示标签栏和导航栏。我搞砸了一堆东西,但无法让它工作。有关如何做到这一点的任何想法?

回答

0

你可以实现这通过让故事板是这样的:

Storyboard Image

然后在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。

+0

哇。 @DrBeardFace,如果我能拥抱你,我会的。非常感谢。这工作!并花时间来描绘这一点。苹果是否会在应用商店中以这种方式拒绝此应用? – Srmuhs

+0

@Srmuhs没问题!很难说苹果是否会因此而拒绝你的应用。我的意思是,它似乎工作得很好,但'pushViewController:animated'的[官方文档](https://developer.apple.com/library/ios/documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html) :完成:'说“视图控制器推到堆栈[...]不能是一个标签栏控制器。”所以如果我是你,我会考虑可能完全抛弃主菜单视图控制器,只是坚持使用持久性标签栏控制器,以保证安全。 – TylerTheCompiler

+0

太好了。谢谢您的帮助! – Srmuhs

0

要显示在viewWillAppear中的导航栏实现这个

[self.navigationController setNavigationBarHidden:NO]; 

要显示在viewWillAppear中的TabBar实现这个

self.tabBarController.tabBar.hidden = NO; 

您可以设定他们是让他们藏在你的菜单上viewWillAppear中

希望它有帮助