self.navigationController.navigationItem和self.navigationItem有什么区别?我在整个应用程序中使用UINavigationController,当我在其中一个viewControllers的viewDidLoad方法中使用self.navigationController.navigationItem.rightBarButtonItems,时,该数组为空。但是,如果我使用self.navigationItem.rightBarButtonItems,我会看到我的栏按钮项。这两个调用之间的区别是什么?谢谢!
发布于 2012-06-26 05:40:22
UINavigationController是UIViewController的子类。因此,它从UIViewController继承了自己独立的navigationItem属性。您应该忽略此属性,因为只有当您将一个导航控制器嵌入到另一个导航控制器中时才会使用它(没有人会这样做)。
发布于 2016-03-01 07:44:42
在下面的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>https://stackoverflow.com/questions/11197620
复制相似问题