首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏navigationBar?

隐藏navigationBar?
EN

Stack Overflow用户
提问于 2013-04-29 03:02:05
回答 1查看 835关注 0票数 0

1) 下面三行代码的区别是什么?

2)如果我返回到一个viewController,而之前的viewController已经将navigationBar设置为通过相同的方法隐藏起来,那么为什么只有第三行代码才能工作--我的假设是,所有三行代码都做同样的事情?

代码语言:javascript
复制
self.navigationController.navigationBar.hidden = NO;
[self.navigationController.navigationBar setHidden:NO];
[self.navigationController setNavigationBarHidden:NO];

后续行动:

为什么当我需要运行这个代码时:

代码语言:javascript
复制
[self.navigationController.navigationBar setBackgroundImage:incorrectAnswerNavigationBarBackgroundImage forBarMetrics:UIBarMetricsDefault]; 

它只工作,工作设置背景图像,否则导航条只是白色。

如果我有这两句话:

代码语言:javascript
复制
[self.navigationController setNavigationBarHidden:NO]; 
self.navigationController.navigationBar.hidden = NO;

如果我省略了self.navigationController.navigationBar.hidden = NO;,导航栏的空间会弹出,但它只是白色的,没有背景图像。如果我有这两条线,它可以工作,并有一个背景图像。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-29 03:12:55

前两种方法在功能上是相同的;区别在于,一种使用点表示法,另一种则不使用。这两种方法都在导航控制器上的- (void) setHidden:(BOOL)hide属性上触发navigationBar

第三种是完全不同的方法。它是- (void) setNavigationBarHidden:(BOOL)hide,是在UINavigationController上定义的。之所以这样做是因为这个方法告诉导航控制器您希望导航条是隐藏的,而前两个手动设置导航条是隐藏的。如果UINavigationController调用任何修改导航栏隐藏属性的方法,则会取消前两个方法的更改,因此创建setNavigationBarHidden:方法是为了告诉UINavigationController,不管它做了什么,它都应该隐藏导航条,而不是将其更改为显示。

编辑:对于这个问题的第二部分,您实际上需要在UINavigationController上调用UINavigationController。这是正确的UINavigationController文档化方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16270616

复制
相关文章

相似问题

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