两个 UINavigationItems?
Two UINavigationItems?
谁能解释一下为什么有两个navigationItems
?当我像下面这样登录时:
NSLog(@"%@", self.navigationItem);
NSLog(@"%@", self.navigationController.navigationItem);
我得到了 UINavigationItem
的两个不同实例:
<UINavigationItem: 0x7f85b06f5a20>
<UINavigationItem: 0x7f85b06ab640>
我只以编程方式创建了一次 UINavigationController
。
所有 UIViewController
都有一个 属性 navigationItem
。所以,因为UINavigationController
是UIViewController
的子类,它还有这个属性.
self.navigationItem
将在您按下控制器时出现。 documentation for navigationItem
,这个就清楚了属性
This is a unique instance of UINavigationItem created to represent the view controller when it is pushed onto a navigation controller.
如果 Apple 允许 UINavigationController
嵌套,self.navigationController.navigationItem
将 显示为项目。但是,因为这是不允许的,所以最好忘记它。
好吧,这个问题让我困惑了一段时间,但我想我明白了。 self.navigationItem
和 self.navigationController.navigationItem
是两个不同的对象。原因如下:
在iOS中,每个UIViewController
对象都有一个UINavigationItem
。当前视图控制器的 navigationItem 是 self.navigationController
,self.navigationController.navigationItem
是一种溢出对象,它是父级 navigationController 的 navigationItem。
谁能解释一下为什么有两个navigationItems
?当我像下面这样登录时:
NSLog(@"%@", self.navigationItem);
NSLog(@"%@", self.navigationController.navigationItem);
我得到了 UINavigationItem
的两个不同实例:
<UINavigationItem: 0x7f85b06f5a20>
<UINavigationItem: 0x7f85b06ab640>
我只以编程方式创建了一次 UINavigationController
。
所有 UIViewController
都有一个 属性 navigationItem
。所以,因为UINavigationController
是UIViewController
的子类,它还有这个属性.
self.navigationItem
将在您按下控制器时出现。 documentation for navigationItem
,这个就清楚了属性
如果 Apple 允许This is a unique instance of UINavigationItem created to represent the view controller when it is pushed onto a navigation controller.
UINavigationController
嵌套,self.navigationController.navigationItem
将 显示为项目。但是,因为这是不允许的,所以最好忘记它。
好吧,这个问题让我困惑了一段时间,但我想我明白了。 self.navigationItem
和 self.navigationController.navigationItem
是两个不同的对象。原因如下:
在iOS中,每个UIViewController
对象都有一个UINavigationItem
。当前视图控制器的 navigationItem 是 self.navigationController
,self.navigationController.navigationItem
是一种溢出对象,它是父级 navigationController 的 navigationItem。