Pergunta

Estou usando a versão 1.1 da biblioteca Three20 e estou definindo uma folha de estilo global para alterar o navigationBarTintColor no delegado do meu aplicativo como este:

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

Isso está funcionando bem, exceto quando o estado do meu aplicativo é restaurado chamando restoreViewControllers em TTNavigator.Nesse caso, a barra de navegação está mostrando o padrão iOS, a cor azul claro.Quando eu navego para a próxima vista, a folha de estilo entra em vigor novamente.

Eu também postei esta pergunta no Three20 Google Group.Vou atualizar aqui se encontrar uma resposta lá, é claro.

Foi útil?

Solução

Nesse ínterim, encontrei uma solução para isso com a ajuda de pessoas amáveis no Grupo Three20 do Google .

Resumindo: a folha de estilo global funcionará corretamente, se todos os controladores de visualização descendem de TTViewController.Ao herdar diretamente de UIViewController, uma solução alternativa é necessária para fazer cumprir o comportamento desejado.Use categorias ou uma superclasse comum para implementar o seguinte método para seus controladores de visualização:

- (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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top