首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >navigationController.navigationItem vs navigationItem

navigationController.navigationItem vs navigationItem
EN

Stack Overflow用户
提问于 2013-06-04 16:43:19
回答 2查看 10.5K关注 0票数 27

只是好奇,为什么设置self.navigationItem = ...可以,但是self.navigationController.navigationItem失败了?同样的道理也适用于self.toolbarItemsself.navigationController.toobarItems

何时使用self.navigationController.navigationItem

也许你会说,它们指向不同的东西。但是为什么self.navigationController.navigationBarHidden = YES导航栏是隐藏的。这不是意味着self.navigationController.navigationItem指向了我想要的酒吧吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-04 16:48:39

UIViewController有一个属性navigationItem

无论是UICollectionViewControllerUITableViewControllerUINavigationViewController还是任何自定义子类,所有的子类都是如此。

当由UINavigationController提供时,nav控制器将创建此属性,因此每个视图控制器都有自己的navigationItem。如果您不从导航控制器中显示它,则navigationItem为空。

现在,对于UINavigationController,您很可能将其用作初始视图控制器。因此,导航控制器不是由另一个导航控制器提供的,并且它的navigationItem属性为nil。

导航栏略有不同,因为这是以另一种方式管理的。

票数 32
EN

Stack Overflow用户

发布于 2017-06-04 13:03:01

虽然set可以设置导航控制器的这个属性:self.navigationController.navigationItem = ..,但它不会工作。主要是因为navigationItem是UIViewController的属性。因为UINavigationController是从UIViewController继承的,所以可以访问该属性。此属性用于添加到导航控制器中的任何视图控制器,以便为其创建导航栏。通常情况下,UINavigationController不会被放入另一个导航控制器中,因此设置导航控制器的此属性通常没有意义。

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

https://stackoverflow.com/questions/16913332

复制
相关文章

相似问题

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