我正在使用Three20库的1.1版,我正在设置一个全局样式表来更改我的app委托中的navigationBarTintColor
,如下所示:
[TTStyleSheet setGlobalStyleSheet:
[[[DefaultStyleSheet alloc] init] autorelease]];
这工作得很好,除非通过调用restoreViewControllers
中的TTNavigator
恢复我的应用状态。在这种情况下,导航栏显示iOS默认的淡蓝色。当我导航到下一个视图时,样式表再次生效。
我还在Three20 Google Group上发布了这个问题。如果我在那里找到答案,我会在这里更新。
答案 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);
}
}