Pregunta

Estoy usando la versión 1.1 de la biblioteca Three20 y estoy configurando una hoja de estilo global para cambiar el navigationBarTintColor en mi aplicación delega así:

[TTStyleSheet setGlobalStyleSheet:
  [[[DefaultStyleSheet alloc] init] autorelease]];

Eso funciona bien, excepto cuando el estado de mi aplicación se restaura llamando restoreViewControllers en TTNavigator.En ese caso, la barra de navegación muestra el color azul pálido predeterminado de iOS.Cuando navego a la siguiente vista, la hoja de estilo vuelve a tener efecto.

También publiqué esta pregunta en el Grupo de Google Three20.Actualizaré aquí si encuentro una respuesta allí, por supuesto.

¿Fue útil?

Solución

Mientras tanto, encontré una solución a esto con la ayuda de la amable gente del Grupo de Google Three20.

En breve:La hoja de estilo global funcionará correctamente si todos los controladores de vista descienden de TTViewController.Al heredar directamente desde UIViewController, se necesita una solución al trabajo para hacer cumplir el comportamiento buscado.Utilice categorías o una superclase común para implementar el siguiente método para sus controladores de vista:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // Work-around for Three20 style sheet misbehavior. See:
    //  http://groups.google.com/group/three20/browse_thread/thread/affbd2a0ee2851c8
    //  http://stackoverflow.com/questions/5406827/ttstylesheet-not-workin-when-restored-by-ttnavigator
    if (self.navigationController) {
        self.navigationController.navigationBar.tintColor = TTSTYLEVAR(navigationBarTintColor);
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top