Search code examples
iosuinavigationcontrolleruinavigationbar

How to change the color of navigation bar on a specific view


I need to change the color of my navigation bar on only some specific views. There are many discussions about modifying the color of navigation bar, like https://stackoverflow.com/a/18870519/938380, but they all change the color of navigation bar on every views under the same navigation hierarchy.

I want to change the color on specific views and keep other views the same color. How do I achieve this?


Solution

  • if you use standart navigation bar, you can't do it. But you can use some cheat ;) For example, you can add this code(or something like this) to your controller:

     - (void)viewDidAppear:(BOOL)animated {
         [super viewDidAppear:animated];
         oldColor = self.navigationController.navigationBar.backgroundColor;//probably barTintColor instead of backgroundColor
         self.navigationController.navigationBar.backgroundColor = [UIColor yellowColor];
     }
     - (void)viewWillDisappear:(BOOL)animated {
         [super viewWillDisappear:animated];
         self.navigationController.navigationBar.backgroundColor = oldColor;
     }