TTStyleSheet не работает при восстановлении с помощью TTNavigator - PullRequest
1 голос
/ 23 марта 2011

Я использую версию 1.1 библиотеки Three20 и задаю глобальную таблицу стилей для изменения navigationBarTintColor в моем делегате приложения следующим образом:

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

Это работает просто отлично,за исключением случаев, когда состояние моего приложения восстанавливается путем вызова restoreViewControllers in TTNavigator.В этом случае панель навигации показывает iOS по умолчанию, бледно-голубой цвет.Когда я перехожу к следующему представлению, таблица стилей снова вступает в силу.

Я также разместил этот вопрос в Группе Google Three20.Я обновлю здесь, если найду ответ, конечно.

1 Ответ

1 голос
/ 24 марта 2011

Тем временем я нашел решение этой проблемы с помощью добрых людей из Three20 Google Group .

Короче говоря: глобальная таблица стилей будет работать правильно, если все контроллеры представления происходят от TTViewController. При наследовании напрямую от UIViewController необходимо обойти обеспечить желаемое поведение. Используйте либо категории, либо общий суперкласс для реализации следующего метода для ваших контроллеров представления:

- (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
    //  /4378995/ttstylesheet-ne-rabotaet-pri-vosstanovlenii-s-pomoschy-ttnavigator
    if (self.navigationController) {
        self.navigationController.navigationBar.tintColor = TTSTYLEVAR(navigationBarTintColor);
    }
}
...