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

时间:2014-05-29 03:21:30

标签: ios iphone objective-c uinavigationbar

我有几个带导航控制器的tableviews。 除最后一个视图外,导航栏为白色,为红色。 我有

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

在最后一个tableview的viewDidLoad和

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

在其他表视图的viewDidLoad中。

它工作正常,直到我到达最后一个视图,导航栏的颜色变为红色。当我返回上一个视图时,所有先前视图的导航栏已更改为红色。我应该把这些代码放在哪里,以便颜色保持不变?

谢谢,

2 个答案:

答案 0 :(得分:2)

将其放入viewWillAppear:。每次视图重新出现时,都会运行此方法中的代码。

答案 1 :(得分:1)

仅在初始化时使用viewDidLoad,因为它被调用一次。在viewWillAppear方法中添加代码应该可以解决您的问题,因为每次查看时都会调用它。

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

-(void) setupAppearance {

    UINavigationBar *navigationBarAppearance = [UINavigationBar appearance];

    navigationBarAppearance.barTintColor = [UIColor redColor];

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