在Show Detail segue之后,NavigationBar不会消失

时间:2017-05-23 04:54:54

标签: ios swift uinavigationcontroller uitabbarcontroller segue

现在我有一个 viewController(A),它是Navagation Controller的根视图控制器,后跟Tab Bar Controller,我想从它执行segue到另一个 viewController(B),完全取代 A

因此,我应用显示详细信息(替换),它在我认为的其他情况下效果很好。但是在这种情况下,当 A 伪装到 B 时,导航栏和标签栏仍然存在。为什么会这样,以及如何解决?

2 个答案:

答案 0 :(得分:1)

在viewController(A)中你必须写

override func viewWillAppear(_ animated: Bool) {
    self.tabBarController?.tabBar.isHidden = false
    self.navigationController?.navigationBar.isHidden = false
}

并且在viewController(B)中你必须写

override func viewWillAppear(_ animated: Bool) {
    self.tabBarController?.tabBar.isHidden = true
    self.navigationController?.navigationBar.isHidden = true
} 

答案 1 :(得分:0)

导航控制器管理一组视图控制器,以便为分层内容提供向下钻取界面。所以它不是问题,它应该如何。请参阅https://developer.apple.com/reference/uikit/uinavigationcontroller

要为整个应用程序隐藏它,您可以按照以下步骤进行操作

application:(UIApplication *)application didFinishLaunchingWithOptions:方法中添加[[UINavigationBar appearance]setHidden:YES];,它会隐藏整个应用的导航栏。

隐藏TabBarController的底栏

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"To viewController(B)"]) {
        viewControllerB *destViewController = segue.destinationViewController;     
        // Hide bottom tab bar in the detail view
        destViewController.hidesBottomBarWhenPushed = YES;
    }
}