如何隐藏我的第一个视图的UINavigationBar
如何隐藏我的第一个视图的UINavigationBar
我想要隐藏Navigation项目中自动加载的UINavigationBar,但只需要在第一个视图中隐藏,并想知道如何实现这个功能。
我尝试了以下方式:
//RootViewController.m
#import "mydelegate.h" //-- 这是视图控制器初始化的地方 //... - (void)viewDidLoad { [super viewDidLoad]; navigationController *navController = [[navigationController alloc] init]; [navigationController setNavigationBarHidden:YES animated:animated]; } //.....
然而,我遇到了错误,我猜这是因为我没有正确地从委托文件中调用navigationController,或者这根本不可能像调用另一个类的方法那样调用它。
非常感谢任何帮助。
问题的原因:导航栏在第一个视图中隐藏,但在需要时无法重新显示。
解决方法:在`viewWillAppear`方法中将导航栏显示,然后在`viewWillDisappear`方法中将导航栏隐藏。可以参考下面的代码:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
这样,在第一个视图中导航栏会显示,而在离开第一个视图时导航栏会隐藏。
问题原因:可能是因为没有正确访问UINavigationController的实例。
解决方法:可以通过self.navigationController来访问UINavigationController,前提是当前的UIViewController已经被添加到其堆栈中。另外,可以尝试使用[self.navigationController setNavigationBarHidden:YES animated:NO]来隐藏UINavigationBar。
参考链接:iPhone hide Navigation Bar only on first page
其他参考资料:建议阅读苹果文档的概述和任务部分,链接为:developer.apple.com/library/ios/#documentation/UIKit/Reference/…
问题原因:
1. 使用了错误的导航控制器访问方式,应该使用self.navigationController
来访问呈现视图控制器的导航控制器。
2. 应该将隐藏导航栏的操作放在viewWillAppear:
方法中,而不是viewDidLoad
方法中。如果在viewDidLoad
方法中隐藏导航栏,当呈现另一个显示导航栏的视图并返回时,导航栏仍然可见。
解决方法:
在viewWillAppear:
方法中设置导航栏隐藏的代码如下:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:animated]; }
在其他被推入该导航控制器的视图控制器中的viewWillAppear:
方法中,需要根据需要显示或隐藏导航栏。
注意:
将上述代码中的两行代码调换位置,即在调用super的viewWillAppear
方法之前设置导航栏隐藏,否则无效。
参考:
我不知道该怎么告诉你。我在我的应用程序中就是这样做的,而且运行正常。