0

ロード時に正常に動作するTTStyledSheetを使用しています。しかし、ビューをリロードすると、スタイリングが失われます。

  1. UITableViewControllerがあります
  2. テーブルビューの各セルにはTTStyledTextLabelがあります
  3. テーブルビューのリロードメカニズムがあります

ビューが読み込まれると、スタイリングはすべて完璧になり、期待どおりになります。しかし、テーブルをリロードすると、スタイリングが完全に失われます

私のfeedView.mファイルには、このようなスタイルシートがあります

@interface feedViewStyleSheet : TTDefaultStyleSheet
@end

@implementation feedViewStyleSheet

- (TTStyle*)smallGrayText {
    TTTextStyle *style=[[TTTextStyle alloc] init];
    [style setFont:[UIFont fontWithName:@"HelveticaNeue" size:9]];
    [style setColor:[[GlobalFunctions sharedGlobalFunctions] UIColorFromRGB:85 :85 :85]];
    [style setNext:nil];
    return [style autorelease];
}
- (TTStyle*)smallBlueText {
    TTTextStyle *style=[[TTTextStyle alloc] init];
    [style setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:14]];
    [style setColor:[[GlobalFunctions sharedGlobalFunctions] UIColorFromRGB:144 :5 :5]];
    [style setNext:nil];
    return [style autorelease];
}


- (TTStyle*)smallText {
    return [TTTextStyle styleWithFont:[UIFont fontWithName:@"HelveticaNeue" size:12] next:nil];
}


@end
#pragma mark {End TTStyles}

ビューの初期化で私はこれを持っています

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        //  TTStyleSheet styles
        [TTStyleSheet setGlobalStyleSheet:[[feedViewStyleSheet alloc] init] ];          

    }
    return self;    
}

デバッグしようとしました。各セルに[TTStyleSheetglobalStyleSheet]を印刷したときの各セル。アプリが起動したとき、そしてそれが私が期待しているとおりのとき。デバッグ出力は次のとおりです

2012-05-29 17:26:17:961 MFace[41092:12803] Cell 0 Style: <feedViewStyleSheet: 0x7f7d240>
2012-05-29 17:26:17:978 MFace[41092:12803] Cell 1 Style: <feedViewStyleSheet: 0x7f7d240>

しかし、リロードすると(スタイルが失われると)、出力は次のようになります。

2012-05-29 17:26:22:228 MFace[41092:12803] Cell 0 Style: <TTDefaultStyleSheet: 0x7f12030>
2012-05-29 17:26:22:228 MFace[41092:12803] Cell 1 Style: <TTDefaultStyleSheet: 0x7f12030>

そして、スタイルシートはリロード時に利用できないようです。init中に「autorelease」を削除しようとしましたが、それでも同じです。

なぜこれが起こっているのかわかりません。助言がありますか?

はい、アプリにTTNavigatorがありません。ただ、TTStyleSheetとstyledText、およびその他のいくつかのコンポーネントのみを使用しようとしています。

ありがとう

4

1 に答える 1

0

これを解決する方法がわかりません。しかし、リロード時にTTStylesがリリースされるか、存在しないと思います。そのため、テーブルをリロードするたびに再宣言しました。これが良いアプローチかどうかはわかりません。しかし、それは私にとってはうまくいきました。

于 2012-05-31T09:34:23.727 に答える