有人可以解释为什么有两个navigationItems
?当我记录如下:
NSLog(@"%@", self.navigationItem);
NSLog(@"%@", self.navigationController.navigationItem);
我得到两个UINavigationItem
的不同实例:
<UINavigationItem: 0x7f85b06f5a20>
<UINavigationItem: 0x7f85b06ab640>
我只是以编程方式创建了一个UINavigationController
。
答案 0 :(得分:1)
所有UIViewController
都有一个属性navigationItem
。因此,因为UINavigationController
是UIViewController
的子类,所以它也具有此属性。
self.navigationItem
将是推送控制器时显示的那个。 navigationItem
为self.navigationController.navigationItem
,此属性
如果Apple允许这是一个UINavigationItem的唯一实例,用于在将视图控制器推送到导航控制器时表示它。
UINavigationController
嵌套,则 self.navigationItem
将成为显示的项目。但是,由于这是不允许的,因此最好不要忘记它。
答案 1 :(得分:0)
好吧,这个问题困惑了我一段时间,但我想我已经明白了。 self.navigationController.navigationItem
和UIViewController
是两个不同的对象。这就是原因:
在iOS中,每个UINavigationItem
对象都有一个self.navigationController
。当前视图控制器的navigationItem为self.navigationController.navigationItem
,USP_A
是一种溢出对象,它是您父导航控制器的navigationItem。