这些天我使用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
我真的很困惑。
答案 0 :(得分:0)
why the NavigationController also has a property NavigationController?
因为它继承自UIViewController
,具有此属性。
作为一般规则,您不希望直接操作封闭视图控制器的导航控制器的属性(这些属性包括导航控制器的导航项和导航栏)。修改self.navigationItem.whateverPropertyYouWannaSet
;导航控制器在将视图控制器推入其堆栈时读取导航项的属性,并根据这些属性设置其自己的导航栏。