self.navigationItem 在任何类中可用?
Posted
技术标签:
【中文标题】self.navigationItem 在任何类中可用?【英文标题】:self.navigationItem available in any class? 【发布时间】:2012-06-28 07:29:24 【问题描述】:如果 viewController 在 navigationStack 中(可能是栈顶), 它会自动拥有self.navigationItem吗?
我一直在问题和教程中看到 self.navigationItem 和 self.navigationController 没有太多上下文,我想知道这些变量是在哪里设置的。
编辑哇,感谢您的快速回答。 我会在哪里发现官方文档中的信息(关于 self.navigationItem)?
【问题讨论】:
【参考方案1】:是的,如果它在堆栈中它确实有一个self.navigationItem
,如果它不在导航堆栈中,self.navigationItem
将等于 nil
这个属性是在一个客观的c类扩展中定义的
@interface UIViewController (UINavigationControllerItem)
它定义了与navigation controller
相关的UIViewController
的属性
【讨论】:
谢谢,文档在哪里说的?这是 ios 库中相对较新的新增功能吗?(5.0+?) 不,实际上它不是新添加的,它在 4 之前我猜我不确定它在 UINavigationController.h 中定义【参考方案2】:是的,您将看到在添加到导航控制器堆栈的每个控制器中设置的 self.navigationItem
和 self.navigationController
属性。一旦你调用pushViewController:animated
或initWithRootViewController:
,这些属性就会被设置。
【讨论】:
【参考方案3】:它们不是由你设置的,除非你明确告诉它。还有一些不是您直接分配的属性,例如:
self.tabBarController;
self.parentViewController;
这就是为什么您应该在尝试访问属性之前检查它是否为nil
。
【讨论】:
以上是关于self.navigationItem 在任何类中可用?的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中将 self.navigationItem.backBarButtonItem 与设备左侧对齐
为啥 self.navigationItem.backBarButtonItem 总是为零?
self.navigationItem.rightBarButtonItem = 按钮不起作用?
navigationController.navigationItem 与 navigationItem
如何在快速用搜索栏替换 self.navigationItem.titleView 后将其放入标题
self.navigationItem.hide Back Button = YES 并在 iOS 7 上使用滑动手势返回