UINavigationController 和 UINavigationItem 有啥区别
Posted
技术标签:
【中文标题】UINavigationController 和 UINavigationItem 有啥区别【英文标题】:What's the difference between UINavigationController and UINavigationItemUINavigationController 和 UINavigationItem 有什么区别 【发布时间】:2012-04-26 12:05:57 【问题描述】:我不明白这两者有什么区别
self.navigationcontroller.navigationitem
和 self.navigationitem
我有基于导航的应用程序,并且在 navigationController 的 rootViewController
中的 viewDidLoad
方法中,我使用此代码将 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
和self.navigationitem
的引用strong> 不一样。
【问题讨论】:
请以适当的格式发布您的问题,以便读者了解您的问题并给您答案 【参考方案1】:我相信您要问的是以下内容:self.navigationController.navigationItem
和 self.navigationItem
。我忽略了问题的其余部分,因为它对问题并不是真正重要的。
据我了解,self.navigationController.navigationItem
是无用的,因为它正在访问导航控制器的导航项(即您的 rootViewController)。您真正想要的是 self.navigationItem
,视图控制器的导航项,因为这实际上是要执行的操作显示在您的视图控制器中。
UINavigationController
是UIViewController
的子类,所以self.navigationController.navigationItem
只是子类化的溢出方法。它没有做任何积极的事情(至少在我的经验中)。
编辑:阅读this 以获得进一步说明。
【讨论】:
那么为什么不同视图控制器中的self.navigationitem不一样?self
这个词应该已经告诉您您正在分别讨论每个 viewController。它不应该是一样的,因为 navigationItem 是 ViewController 的一个属性。我从来没有说他们是一样的,事实上我说他们总是各有各的。【参考方案2】:
他们是不同的。如果动态添加UINavigationController
,则使用self.navigationController.navigationItem
。
请更好地澄清您的问题。
【讨论】:
这是不正确的,即使动态创建了UINavigationController
,也应该访问视图控制器的navigationItem
以上是关于UINavigationController 和 UINavigationItem 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换
UINavigationController 和 titleView
UINavigationController 子类和推送 Segue