I have an issue in iOS7 where a normal UINavigationController pushed view controller has the correct status bar text color for the UINavigationController navbar color (which is
The navigation controller decides whether to have a light or dark content based on its navigation bar's barStyle
property. The default, UIBarStyleDefault
, means the navigation bar has a light color and the status bar will have dark content. Changing this property to UIBarStyleBlack
doesn't actually make the navigation bar black (the color of the navigation bar is still set using barTintColor
), but it tells it that it has a dark color. The navigation controller then decides that, since the navigation bar is dark, it should set the status bar content to light.
It appears that on your main navigation controller (on which you push things) the barStyle
is indeed set to UIBarStyleBlack
somewhere. You have to do the same thing to the modally presented navigation controller, like so:
UINavigationController *newViewController = [[UINavigationController alloc] initWithRootViewController:modalViewController];
newViewController.navigationBar.barStyle = self.navigationController.navigationBar.barStyle;
[self presentViewController:newViewController animated:YES completion:nil];