导航栏颜色不会变回来? IOS 7

Posted

技术标签:

【中文标题】导航栏颜色不会变回来? IOS 7【英文标题】:Navigation Bar color doesn't change back? iOS7 【发布时间】:2014-05-29 03:21:29 【问题描述】:

我有几个带有导航控制器的表格视图。 除了最后一个是红色的,所有视图的导航栏都是白色的。 我有

[[[self navigationController] navigationBar] setTintColor:[UIColor redColor];

在最后一个tableview的viewDidLoad和

[[[self navigationController] navigationBar] setTintColor:[UIColor whiteColor];

在其他表视图的viewDidLoad中。

在我到达最后一个视图并且导航栏的颜色变为红色之前,它工作正常。当我回到以前的视图时,所有以前的视图的导航栏都变成了红色。我应该把这些代码放在哪里,这样颜色才会保持不变?

谢谢,

【问题讨论】:

【参考方案1】:

把它放在viewWillAppear:。每次视图重新出现时都会运行此方法中的代码。

【讨论】:

谢谢,效果很好!它创建了另一个问题,即选定单元格保持突出显示,但通过将 deselectRowAtIndexPath 添加到 viewWillAppear 来修复它:) 再次感谢! 没问题。如果您的视图控制器是UIViewController 而不是UITableViewController,您必须在viewWillAppear 中手动取消选择行。【参考方案2】:

仅将viewDidLoad 用于初始化目的,因为它被调用一次。在 viewWillAppear 方法中添加代码应该可以解决您的问题,因为每次视图出现时都会调用它。

不过,我喜欢使用 UIAppearance 通过创建另一个方法来自定义类的所有实例的外观 -

-(void) setupAppearance 

    UINavigationBar *navigationBarAppearance = [UINavigationBar appearance];

    navigationBarAppearance.barTintColor = [UIColor redColor];

    // Another method 
    // [UINavigationBar appearance].barTintColor = [UIColor redColor];

【讨论】:

以上是关于导航栏颜色不会变回来? IOS 7的主要内容,如果未能解决你的问题,请参考以下文章

ios 7状态栏不继承导航栏颜色

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

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

iOS 7中导航栏的默认背景颜色是什么?

iOS 7 导航栏文本和箭头颜色

iOS 7 中 UIActivityViewControllers 的模态状态栏和导航栏文本颜色