I'm using this:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
 setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                         color ,NSForegroundColorAttributeName,
                         FONT(FONT_REGULAR, 15.0f), NSFontAttributeName,
                         nil] forState:UIControlStateNormal];
To set a color for button in UINavigationController on viewWillAppear: methods.
My application has 5 main views each with UINavigationController grouped under UITabBar.
Problem is that when I switch between UITabBar views, it goes crazy and it always apply the last initialized view color to all other views. I tripple check code is running when I change with proper parameters it just has no effect on existing buttons. 
Is there any other way to set color separately for different UINavigationControllers ?