1

这些天我对使用 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

我真的很困惑。

4

1 回答 1

0
why the NavigationController also has a property NavigationController?

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

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

于 2012-07-30T09:59:10.977 回答