两个UINavigationItems?

时间:2015-06-25 16:27:13

标签: ios uinavigationitem

有人可以解释为什么有两个navigationItems?当我记录如下:

NSLog(@"%@", self.navigationItem);
NSLog(@"%@", self.navigationController.navigationItem);

我得到两个UINavigationItem的不同实例:

<UINavigationItem: 0x7f85b06f5a20>
<UINavigationItem: 0x7f85b06ab640>

我只是以编程方式创建了一个UINavigationController

2 个答案:

答案 0 :(得分:1)

所有UIViewController都有一个属性navigationItem。因此,因为UINavigationControllerUIViewController的子类,所以它也具有此属性。

self.navigationItem将是推送控制器时显示的那个。 navigationItemself.navigationController.navigationItem,此属性

很清楚
  

这是一个UINavigationItem的唯一实例,用于在将视图控制器推送到导航控制器时表示它。

如果Apple允许UINavigationController嵌套,则

self.navigationItem 将成为显示的项目。但是,由于这是不允许的,因此最好不要忘记它。

答案 1 :(得分:0)

好吧,这个问题困惑了我一段时间,但我想我已经明白了。 self.navigationController.navigationItemUIViewController是两个不同的对象。这就是原因:

在iOS中,每个UINavigationItem对象都有一个self.navigationController。当前视图控制器的navigationItem为self.navigationController.navigationItemUSP_A是一种溢出对象,它是您父导航控制器的navigationItem。