iOS:更改所有导航栏的 self.navigationController.navigationBar.tintColor 更改

Posted

技术标签:

【中文标题】iOS:更改所有导航栏的 self.navigationController.navigationBar.tintColor 更改【英文标题】:iOS: Changing self.navigationController.navigationBar.tintColor changes for all the navigation bars 【发布时间】:2016-09-16 04:46:08 【问题描述】:

我正在从包含表格视图(例如 tableC)的视图控制器导航到导航控制器(例如 navC)。

在这个 navC 的 rootViewController 中,我使用 self.navigationController.navigationBar.tintColor = [UIColor redColor] 在导航栏中设置了 backButton 的标题颜色。

当我回到 tableC 时,后退按钮的标题颜色变为 redColor。

它还会更改我之后导航到的任何其他视图控制器的 backButton 标题颜色。

【问题讨论】:

【参考方案1】:

当你推送一个 Viewcontroller 时,它是 Rootviewcontroller。如果更改任何颜色(tintColor 或 barColor),也会影响 Rootviewcontroller。

如果您需要为每个 ViewController 设置不同的颜色,请在其 viewWillAppear() 方法中进行设置。

如果您只需要更改一个 ViewController 的栏按钮颜色,请将其设置为 viewWillAppear 并在 viewWillDisappear 中将其重置为原始颜色

例如 设置为红色

- (void) viewWillAppear:(BOOL)animated

  self.navigationController.navigationBar.tintColor = [UIColor redColor]  

重置为白色

- (void) viewWillDisappear:(BOOL)animated

  self.navigationController.navigationBar.tintColor = [UIColor whiteColor]  

【讨论】:

谢谢 Girish。我已经用这种方法解决了这个问题。但我认为这是一种解决方法而不是具体的解决方案,因此我划伤了我的代码。

以上是关于iOS:更改所有导航栏的 self.navigationController.navigationBar.tintColor 更改的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7隐藏导航栏时如何更改状态栏的颜色?

iOS 7:在底部导航栏的表格视图之间滑动

如何在带有导航栏的模态视图中更改 iOS 7 中的 UIStatusBarStyle?

在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?

更改导航栏的按钮颜色

如何在 iOS 12.2 中更改导航栏高度?