如何隐藏我的第一个视图的UINavigationBar

10 浏览
0 Comments

如何隐藏我的第一个视图的UINavigationBar

我想要隐藏Navigation项目中自动加载的UINavigationBar,但只需要在第一个视图中隐藏,并想知道如何实现这个功能。

我尝试了以下方式:

//RootViewController.m

#import "mydelegate.h" //-- 这是视图控制器初始化的地方
//...
- (void)viewDidLoad
{
    [super viewDidLoad];
    navigationController *navController = [[navigationController alloc] init];
    [navigationController setNavigationBarHidden:YES animated:animated];
}
//.....

然而,我遇到了错误,我猜这是因为我没有正确地从委托文件中调用navigationController,或者这根本不可能像调用另一个类的方法那样调用它。

非常感谢任何帮助。

0
0 Comments

问题的原因:导航栏在第一个视图中隐藏,但在需要时无法重新显示。

解决方法:在`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)

}

这样,在第一个视图中导航栏会显示,而在离开第一个视图时导航栏会隐藏。

0
0 Comments

问题原因:可能是因为没有正确访问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/…

0
0 Comments

问题原因:

1. 使用了错误的导航控制器访问方式,应该使用self.navigationController来访问呈现视图控制器的导航控制器。

2. 应该将隐藏导航栏的操作放在viewWillAppear:方法中,而不是viewDidLoad方法中。如果在viewDidLoad方法中隐藏导航栏,当呈现另一个显示导航栏的视图并返回时,导航栏仍然可见。

解决方法:

viewWillAppear:方法中设置导航栏隐藏的代码如下:

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

在其他被推入该导航控制器的视图控制器中的viewWillAppear:方法中,需要根据需要显示或隐藏导航栏。

注意:

将上述代码中的两行代码调换位置,即在调用super的viewWillAppear方法之前设置导航栏隐藏,否则无效。

参考:

我不知道该怎么告诉你。我在我的应用程序中就是这样做的,而且运行正常。

0