TTStyleSheet не работает при восстановлении с помощью TTNavigator

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

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

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

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

1 ответ

Решение

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

Вкратце: глобальная таблица стилей будет работать правильно, если все контроллеры представления будут происходить из 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
    //  http://stackru.com/questions/5406827/ttstylesheet-not-workin-when-restored-by-ttnavigator
    if (self.navigationController) {
        self.navigationController.navigationBar.tintColor = TTSTYLEVAR(navigationBarTintColor);
    }
}
Другие вопросы по тегам