首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对一个特定的视图控制器隐藏导航栏

如何对一个特定的视图控制器隐藏导航栏
EN

Stack Overflow用户
提问于 2012-02-11 17:14:53
回答 7查看 67.6K关注 0票数 74

我已经创建了一个两个闪屏的iPhone应用程序。之后,用户被带到第一个视图。我添加了一个UINavigationController。它工作得非常好。

如何删除打开视图的导航栏?

MainWindow

代码语言:javascript
运行
复制
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    


self.splashScreen = [[SplashScreen alloc] 
                initWithNibName:@"SplashScreen" 
                bundle:nil];
if (self.pageController == nil) {
openingpage *page=[[openingpage alloc]initWithNibName:@"openingpage" bundle:[NSBundle mainBundle]];
    self.pageController = page;
    [page release];
}
[self.navigationController pushViewController:self.pageController animated:YES];

[window addSubview:splashScreen.view];

 [splashScreen displayScreen];
[self.window makeKeyAndVisible];

return YES;
 }
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-11 17:47:32

在视图控制器中尝试此方法:

代码语言:javascript
运行
复制
// swift
self.navigationController?.setNavigationBarHidden(true, animated: true)

// objective-c
[self.navigationController setNavigationBarHidden:YES animated:YES]; 

更多说明:

UINavigationController有一个属性navigationBarHidden,它允许您隐藏/显示整个导航控制器的导航栏。

让我们看看下一个层次结构:

代码语言:javascript
运行
复制
--UINavigationController
------UIViewController1
------UIViewController2
------UIViewController3

三个UIViewController中的每一个都有相同的导航栏,因为它们在UINavigationController中。例如,您想隐藏UIViewController2的栏(实际上这与在哪个栏中没有关系),然后在您的UIViewController2中写入:

代码语言:javascript
运行
复制
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];   //it hides the bar
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES]; // it shows the bar back
}
票数 160
EN

Stack Overflow用户

发布于 2017-08-09 18:04:52

Swift 4:

代码语言:javascript
运行
复制
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    navigationController?.setNavigationBarHidden(true, animated: true)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(true)
    navigationController?.setNavigationBarHidden(false, animated: false)
}
票数 22
EN

Stack Overflow用户

发布于 2018-09-21 04:29:30

这对我来说很有效:

Swift 4

代码语言:javascript
运行
复制
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: false)
}

//reappears navigation bar on next page
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: true)
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9239067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档