5

self.navigationController.navigationItem 和 self.navigationItem 有什么区别?我在整个应用程序中使用 UINavigationController,当我在其中一个 viewController 的 viewDidLoad 方法之一中使用 self.navigationController.navigationItem.rightBarButtonItems 时,数组为空。但是,如果我使用 self.navigationItem.rightBarButtonItems,我会看到我的栏按钮项目。这两个调用有什么区别?谢谢!

4

2 回答 2

5

AUINavigationController是 的子类UIViewController。因此,它有自己的独立navigationItem财产,它继承自UIViewController. 您应该忽略此属性,因为只有在您将导航控制器嵌入另一个导航控制器时才会使用它(他们的正常思维中没有人会这样做)。

于 2012-06-25T21:40:22.017 回答
0

从 的文档中UIViewController+UINavigationControllerItem,见下文,我们应该navigationItem直接在视图控制器上使用该属性:

// Created on-demand so that a view controller may customize its navigation appearance.
@property(nonatomic,readonly,strong) UINavigationItem *navigationItem;

UINavigationController也有一个navigationItem属性,因为它继承自UIViewController,但设置它不会影响视图控制器的导航属性。

通过快速测试,我们可以看到这些导航项也不相等:

(lldb) po self.navigationItem
<UINavigationItem: 0x7f865c99ec50>

(lldb) expr -- @import UIKit
(lldb) po self.navigationController.navigationItem
<UINavigationItem: 0x7f865c811740>
于 2016-02-29T23:44:41.907 回答