1

Three20ライブラリのバージョン1.1を使用しており、グローバルスタイルシートを設定しnavigationBarTintColorて、アプリデリゲートを次のように変更しています。

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

を呼び出してアプリの状態を復元する場合を除いて、これは問題なく機能restoreViewControllersしていTTNavigatorます。その場合、ナビゲーションバーにはiOSのデフォルトの淡い青色が表示されます。次のビューに移動すると、スタイルシートが再び有効になります。

この質問はThree20Googleグループにも投稿しました。もちろん、そこで答えが見つかったら、ここで更新します。

4

1 に答える 1

1

その間、 Three20 Google Groupの親切な人々の助けを借りて、これに対する解決策を見つけました。

つまり、すべてのビュー コントローラーが TTViewController から派生している場合、グローバル スタイル シートは正しく機能します。UIViewController から直接継承する場合は、必要な動作を強制するための回避策が必要です。カテゴリまたは共通のスーパークラスを使用して、View Controller に次のメソッドを実装します。

- (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 に答える