UINavigationController和UINavigationItem之间的关系是什么

时间:2012-07-30 09:53:35

标签: ios uinavigationcontroller

这些天我使用UINavigationController变得困惑; 我想自定义UINavigationController,更改其背景图像和添加按钮; 我在2个项目中试过这个。在第一篇文章中,我使用

完成了这项工作

self.navigationController.navigationItem.leftBarButtonItem = customItem; 但在secoenter代码中这个方法不起作用。我必须使用

self.navigationItem.leftBarButtonItem = customItem;

如果ViewController是NavigationController的rootViewController,它有两个属性:

self.navigationController
self.navigationItem

并且导航有3个属性:

self.navigationController.navigationController
self.navigationController.navigationBar
self.navigationController.navigationItem

为什么NavigationController还有一个属性NavigationController?

为什么有时我会使用

self.navigationController.navigationItem

但有时我必须使用

self.navigationItem

我真的很困惑。

1 个答案:

答案 0 :(得分:0)

why the NavigationController also has a property NavigationController?

因为它继承自UIViewController,具有此属性。

作为一般规则,您不希望直接操作封闭视图控制器的导航控制器的属性(这些属性包括导航控制器的导航项和导航栏)。修改self.navigationItem.whateverPropertyYouWannaSet;导航控制器在将视图控制器推入其堆栈时读取导航项的属性,并根据这些属性设置其自己的导航栏。