Ios self.navigationItem在任何类中都可用吗?

Ios self.navigationItem在任何类中都可用吗?,ios,uinavigationcontroller,uinavigationitem,Ios,Uinavigationcontroller,Uinavigationitem,如果viewController位于navigationStack中(可能位于堆栈顶部), 它是否自动拥有self.navigationItem 在问题和教程中,我一直看到self.navigationItem和self.navigationController没有太多上下文,我想知道这些变量设置在哪里 编辑 哇,谢谢你的快速回答。 我会在哪里发现官方文档中的信息(关于self.navigationItem)?是的,如果它在堆栈中,它确实有一个self.navigationItem,如果它不

如果viewController位于navigationStack中(可能位于堆栈顶部),
它是否自动拥有self.navigationItem

在问题和教程中,我一直看到self.navigationItem和self.navigationController没有太多上下文,我想知道这些变量设置在哪里

  • 编辑
哇,谢谢你的快速回答。

我会在哪里发现官方文档中的信息(关于self.navigationItem)?

是的,如果它在堆栈中,它确实有一个
self.navigationItem
,如果它不在导航堆栈中
self.navigationItem
将等于零

此属性在目标c类扩展中定义

@interface UIViewController (UINavigationControllerItem)

它定义了与导航控制器相关的
UIViewController
的属性。是的,您将在添加到导航控制器堆栈的每个控制器中看到
self.navigationItem
self.navigationController
属性集。调用
pushViewController:animated
initWithRootViewController:

后,这些属性将被设置,除非您明确告知,否则它们不是由您设置的。还有一些其他属性不是由您直接指定的,例如:

self.tabBarController;

self.parentViewController;

这就是为什么在尝试访问某个属性之前,您应该检查它是否为
nil

谢谢,文档中哪里这么说?这是对iOS库的一个相对较新的添加吗?(5.0+?)不,实际上它不是一个新的添加,它早于4,我想我不确定它在UINavigationController.h中的定义