Question

J'utilise la version 1.1 de la bibliothèque Three20 et je définis une feuille de style global pour modifier le navigationBarTintColor Dans mon application déléguée comme ceci:

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

Cela fonctionne très bien, sauf lorsque mon état d'application est restauré en appelant restoreViewControllers dans TTNavigator. Dans ce cas, la barre de navigation affiche la couleur blue par défaut iOS. Lorsque je navigue vers la vue suivante, la feuille de style reprend effet.

J'ai également posté cette question sur le groupe Three20 Google. Je mettrai à jour ici si je trouve une réponse là-bas, bien sûr.

Était-ce utile?

La solution

En attendant, j'ai trouvé une solution à cela avec l'aide des gens aimables sur le Groupe de trois20 Google.

En bref: la feuille de style global fonctionnera correctement, si tous les contrôleurs de vue descendent de TTViewController. Lors de l'héritage directement de UIViewController, une solution est nécessaire pour appliquer le comportement recherché. Utilisez soit des catégories ou une super-classe commune pour implémenter la méthode suivante pour vos contrôleurs de vue:

- (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);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top