TTNavigator恢复时TTStyleSheet无法正常工作

时间:2011-03-23 14:33:55

标签: iphone ios three20 ttnavigator

我正在使用Three20库的1.1版,我正在设置一个全局样式表来更改我的app委托中的navigationBarTintColor,如下所示:

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

这工作得很好,除非通过调用restoreViewControllers中的TTNavigator恢复我的应用状态。在这种情况下,导航栏显示iOS默认的淡蓝色。当我导航到下一个视图时,样式表再次生效。

我还在Three20 Google Group上发布了这个问题。如果我在那里找到答案,我会在这里更新。

1 个答案:

答案 0 :(得分:1)

与此同时,我在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
    //  http://stackoverflow.com/questions/5406827/ttstylesheet-not-workin-when-restored-by-ttnavigator
    if (self.navigationController) {
        self.navigationController.navigationBar.tintColor = TTSTYLEVAR(navigationBarTintColor);
    }
}