4

最近、アプリに three20 を統合して、TTWebController のデフォルトのツールバーの色をオーバーライドしようとしています。

TTWebController.m:118 で、これがツールバーの tintColor を設定していることがわかります。

_toolbar.tintColor = TTSTYLEVAR(toolbarTintColor);

そこで、TTDefaultStyleSheet をサブクラス化し、toolbarTintColor をオーバーライドする独自のスタイルシートを作成しました。

FooStyleSheet.h:

#import <Three20Style/Three20Style.h>
#import <Three20Style/TTStyleSheet.h>
#import <Three20Style/TTDefaultStyleSheet.h>

@interface FooStyleSheet : TTDefaultStyleSheet

@property (nonatomic, readonly) UIColor* toolbarTintColor;

@end

FooStyleSheet.m:

#import "FooStyleSheet.h"

@implementation RaptrStyleSheet

- (UIColor*)toolbarTintColor {
    return RGBCOLOR(0, 0, 0); // should override TTDefaultStyleSheet
}

@end

そして私のアプリケーションで:didFinishLaunchingWithOptions:私はデフォルトのスタイルシートを設定しました

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

しかし、TTWebController を表示すると、tintColor が継承されません。TTDefaultStyleSheet.m を直接編集すると:

- (UIColor*)toolbarTintColor {
  return [UIColor blackColor];
}

期待どおりに動作します。

自分のスタイルを取り入れるのを妨げている見落としがあるものはありますか?

ありがとう、-
ノルム

4

1 に答える 1

0

ヘッダー ファイルでは、@property は不要です。これを削除すると問題は解決しますか?

于 2011-05-10T22:58:11.743 に答える