从UIViewController+UINavigationControllerItem
@interface UIViewController (UINavigationControllerItem)的文档中可以看到,我们应该直接在视图控制器上使用navigationItem属性:
//按需创建,以便视图控制器可以自定义其导航外观
@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>
UINavigationController是UIViewController的子类。因此,它有自己独立的navigationItem属性,它继承自UIViewController。你应该忽略这个属性,因为它只会在你将导航控制器嵌入到另一个导航控制器中时才会被使用(没有人会在他们正确的思想中做过)。
网友评论