【问题标题】:UITabBarController selected item show navigation barUITabBarController 选中项显示导航栏
【发布时间】:2017-08-13 00:41:06
【问题描述】:

我正在使用 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;
}

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

【问题讨论】:

  • 为此,您的每个视图控制器都应嵌入导航控制器中。之后将所有导航控制器添加到标签栏控制器。使用单个导航控制器,它真的很复杂。
  • 检查答案可能会有所帮助stackoverflow.com/questions/42120482/…

标签: ios objective-c uitabbarcontroller uinavigationbar


【解决方案1】:

如果您在底部有多个遵循结构的标签:

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

那么要在第一个视图控制器中隐藏导航栏,需要使用如下代码

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

【讨论】:

  • 我尝试了@Lal Krishna 的回答,它奏效了。但也感谢您的帮助。
【解决方案2】:

如果您在某些视图控制器中必须使用此方法:

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

斯威夫特

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2019-01-11
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多