导航栏颜色不会变回来? 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的主要内容,如果未能解决你的问题,请参考以下文章