2017-03-21 106 views
0

我正在使用UITabBarController和UINavigationController进行应用程序。 视图控制器图如下所示:
UITabBarController选择项显示导航栏

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; 
} 

任何人都知道如何在第一视图控制器我的导航栏设置为总是隐藏?请帮忙。 提前致谢。

+0

为此,每个视图控制器应该嵌入导航控制器中。之后,将所有导航控制器添加到标签栏控制器。单导航控制器,它非常复杂。 – Pawan

+0

检查答案可能有所帮助http://stackoverflow.com/questions/42120482/navigation-bar-is-moving-up-to-statusbar – Joe

回答

1

,如果你是在一些视图控制器必须使用此方法:

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

要隐藏的导航栏任何的viewController:

Objective-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]; 
} 

Swift

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) 
} 
+0

谢谢,它的工作! –

+0

快乐编码:) –

1
If you have multiple tabs at bottom who follows structure: 

Controller > Navigation Controller > View Controller 

Then to hide navigation bar in first view controller, you need to use following code 

// TO HIDE NAVIGATION BAR in first view controller 

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

// TO SHOW NAVIGATION BAR in other view controllers 

If you want all other views should have navigation bar visible, you could use viewWillDisappear to set it to visible again. 


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

我试过@Lal Krishna答案,它的工作。但也感谢你的帮助。 –

+0

欢迎@SonHoang –