iOS 5: ¿Puede anular las personalizaciones de UIApppp en sus classs específicas?

Estoy construyendo una aplicación con muchos controlleres de vista: tengo un UITabBarController que contiene 4 UINavigationController . Quiero que todas las barras de navigation sean mi color personalizado, digamos azul, lo que consigo al hacer esto en mi delegado de la aplicación:

 [[UINavigationBar appearance] setTintColor:[UIColor blueColor]]; 

Pero también tengo un controller de vista especial que tiene un map, y para este controller de vista, quiero anular el set de barra de navigation azul utilizando UIAppearance para que sea el estilo opaco negro. Lo he intentado invocando esta vista dentro de viewDidLoad :

 self.navigationController.navigationBar.barStyle = UIBarStyleBlack; self.navigationController.navigationBar.translucent = YES; 

Pero nada pasa. ¿Se puede hacer esto o tengo que abandonar UIAppearance y establecer las properties en la barra de navigationBar manualmente para cada controller de vista?

La forma en que lo haces se supone que funciona, pero no funciona. Sin embargo, esto funciona:

 [[UINavigationBar appearanceWhenContainedIn:[YourOtherVC class], nil] setTintColor:[UIColor blackColor]]; 

Mueva sus cambios a viewWillAppear: en lugar de viewDidLoad: y debería funcionar.

Para eso harías:

 id specialNavBarAppearance = [UINavigationBar appearanceWhenContainedIn:[SpecialViewController class], nil]; [specialNavBarAppearance setBarStyle:UIBarStyleBlack]; [specialNavBarAppearance setTranslucent:YES];