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

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

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

在最后一个tableview的viewDidLoad和

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

在其他表视图的viewDidLoad中。

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

谢谢,

【问题讨论】:

    标签: ios iphone objective-c uinavigationbar


    【解决方案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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      相关资源
      最近更新 更多