1

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

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

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

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

4

1 回答 1

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);
    }
}
于 2011-03-24T15:17:57.133 回答