TTStyleSheet não funciona quando restaurado por TTNavigator
-
29-10-2019 - |
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.
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);
}
}