iOS - 仅在一个视图上隐藏导航栏?
Posted
技术标签:
【中文标题】iOS - 仅在一个视图上隐藏导航栏?【英文标题】:iOS - Hide navigation bar only on one view? 【发布时间】:2017-02-03 19:17:58 【问题描述】:我有一个登录视图控制器,成功登录后,它会将我的用户推送到另一个视图控制器 (ViewControllerB)。话虽如此,ViewControllerB 嵌入在我已经用菜单按钮格式化的 UINavigationController 中。
因为我正在使用来自登录视图控制器的推送转场,所以这个转场会导致我的 UINavigationBar 被空白导航栏和后退按钮(不酷)覆盖。也就是说,我尝试使用以下代码从登录视图控制器中隐藏导航控制器:
loginviewcontroller.m
- (void) viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
当我这样做时,带有后退按钮的不需要的导航栏会被删除,我的另一个导航栏会被删除!伟大的。但是,当我然后导航到其他屏幕时,我的导航栏仍然隐藏(并且我希望它在我的用户通过 ViewControllerB 时出现)。
我尝试在成功登录时使用模态转场,但当然,这使我无法在登录时导航到其他带有转场的屏幕。
知道我该怎么做吗?
【问题讨论】:
【参考方案1】:添加这个:
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
【讨论】:
【参考方案2】:你应该从你的第一个 Viewcontroller 或你的 loginViewController 嵌入 UINavigationController 并且在这个 ViewController 中你将隐藏导航栏,对于你的下一个 viewController 你可以取消隐藏导航栏。它对我有用。
【讨论】:
【参考方案3】:斯威夫特 3
override func viewWillAppear(_ animated: Bool)
//for hide navigation bar in current view
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
override func viewWillDisappear(_ animated: Bool)
//for unhide in navigation bar in next/previous view
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: animated)
【讨论】:
以上是关于iOS - 仅在一个视图上隐藏导航栏?的主要内容,如果未能解决你的问题,请参考以下文章