Domanda

Sto utilizzando la versione 1.1 della libreria Three20 e sto impostando un foglio di stile globale per modificare il navigationBarTintColor nel mio delegato dell'app in questo modo:

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

Funziona perfettamente, tranne quando lo stato della mia app viene ripristinato chiamando restoreViewControllers in TTNavigator.In tal caso, la barra di navigazione mostra il colore blu pallido predefinito di iOS.Quando passo alla vista successiva, il foglio di stile ha di nuovo effetto.

Ho anche pubblicato questa domanda su Three20 Google Group.Ovviamente aggiornerò qui se trovo una risposta.

È stato utile?

Soluzione

Nel frattempo, ho trovato una soluzione a questo problema con l'aiuto delle persone gentili sul Three20 Google Group .

In breve: il foglio di stile globale funzionerà correttamente, se tutti i controller di visualizzazione discendono da TTViewController.Quando si eredita direttamente da UIViewController, è necessaria una soluzione imporre il comportamento desiderato.Utilizza le categorie o una superclasse comune per implementare il seguente metodo per i tuoi controller di visualizzazione:

- (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);
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top