我有几个带导航控制器的tableviews。 除最后一个视图外,导航栏为白色,为红色。 我有
[[[self navigationController] navigationBar] setTintColor:[UIColor redColor];
在最后一个tableview的viewDidLoad和
中 [[[self navigationController] navigationBar] setTintColor:[UIColor whiteColor];
在其他表视图的viewDidLoad中。
它工作正常,直到我到达最后一个视图,导航栏的颜色变为红色。当我返回上一个视图时,所有先前视图的导航栏已更改为红色。我应该把这些代码放在哪里,以便颜色保持不变?
谢谢,
答案 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];
}