UITabBar控制器所选项目显示导航栏



我正在使用UITabBarController和UINavigationController制作应用程序。视图控制器图如下所示:

TabBar Controller > Navigation Controller > View Controller

在第一个视图控制器中,我将导航栏设置为隐藏。但是当我单击TabBar项目以显示其他视图控制器时,然后单击返回第一个视图控制器时,将显示导航栏。每当我添加所有其他视图控制器时:

 -(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.navigationController.navigationBarHidden = NO;
}
-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    self.navigationController.navigationBarHidden = YES;
}

有人知道如何在第一视图控制器中设置我的导航栏以始终隐藏吗?请帮忙。提前谢谢。

如果你在某个视图中,控制器必须使用这种方法:

[self.navigationController setNavigationBarHidden:YES animated:YES];

要隐藏导航栏在任何视图中控制器:

目标-C

- (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:YES animated:animated];   // Will hides Navigationbar  
    [super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:animated]; // Will shows Navigationbar
    [super viewWillDisappear:animated];
}

迅速

override func viewWillAppear(animated: Bool) {
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
    super.viewWillAppear(animated)
}
override func viewWillDisappear(animated: Bool) {
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
    super.viewWillDisappear(animated)
} 

如果底部有多个选项卡,则遵循结构:

控制器> 导航 控制器> 视图控制器

然后要在第一个视图控制器中隐藏导航栏,您需要使用以下代码

// TO HIDE NAVIGATION BAR in the first view controller
-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}
// TO SHOW NAVIGATION BAR in other view controllers 

如果您希望所有其他视图都显示导航栏,则可以使用 viewWillDisappear 将其再次设置为可见。

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];
}

最新更新