UINavigationController和UINavigationItem之间有什么区别

时间:2012-04-26 12:05:58

标签: ios uinavigationcontroller uinavigationitem

我不明白有什么区别 self.navigationcontroller.navigationitemself.navigationitem 我有基于导航的应用程序和导航控制器viewDidLoad中的rootViewController方法我使用此代码将NavigationItem titleView设置为自定义图像

UIImageView* titleImage=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
self.navigationItem.titleView =titleImage;
顺便说一句,如果我试图通过这种方式改变标题视图

UIImageView* titleImage=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
self.navigationcontroller.navigationItem.titleView =titleImage;
没有发生任何事情。 ,当navigationcontroller将另一个视图推送到堆栈时,navigationitem的titleview被清除,引用设置为nil,我也注意到 self.navigationcontroller.navigationitem {{1 不一样。

2 个答案:

答案 0 :(得分:9)

我相信您提出的问题如下:self.navigationController.navigationItemself.navigationItem。我忽略了问题的其余部分,因为这对问题不是很重要。

根据我的理解self.navigationController.navigationItem是无用的,因为它正在访问导航控制器的导航项(即你的rootViewController)。你真正想要的是self.navigationItem,视图控制器的导航项,因为它是什么基本上会出现在你的视图控制器中。

UINavigationControllerUIViewController的子类,因此self.navigationController.navigationItem只是子类化的溢出方法。它没有做任何积极的事情(至少根据我的经验)。

修改:请阅读this以进一步说明。

答案 1 :(得分:1)

他们是不同的。如果您动态添加UINavigationController,则使用self.navigationController.navigationItem

请更好地澄清您的问题。