проблема таблицы стилей - PullRequest
1 голос
/ 23 июля 2011

Я написал код вроде:

+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)item {
    CustomTTTableSubtitleItem* captionedItem = item;
    CGFloat maxWidth = tableView.width - kHPadding*2;
    CGSize titleSize = [captionedItem.title sizeWithFont:TTSTYLEVAR(myTitleFont) constrainedToSize:CGSizeMake(maxWidth, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
}

Получил это исключение:

2011-07-24 03: 10: 18.762 xinyou [15941: b303] - [TTDefaultStyleSheet myTitleFont]: нераспознанный селектор отправлен на экземпляр 0x5b5e120 2011-07-24 03: 10: 18.765 xinyou [15941: b303] * Завершение приложения из-за необработанное исключение 'NSInvalidArgumentException', причина: '- [TTDefaultStyleSheet myTitleFont]: нераспознанный селектор отправлен экземпляр 0x5b5e120 ' * стек вызовов при первом броске: (0 CoreFoundation
0x0119a5a9 исключениеПроцесс + 185 1 libobjc.A.dylib
0x012ee313 objc_exception_throw + 44 2 CoreFoundation
0x0119c0bb - [NSObject (NSObject) делает NotRecognizeSelector:] + 187 3
CoreFoundation 0x0110b966 __ пересылка
+ 966 4 CoreFoundation 0x0110b522 _CF_forwarding_prep_0 + 50 5 xinyou
0x000081f9 + [CustomTTTableSubtitleItemCell tableView: rowHeightForObject:] + 186 6 xinyou
0x000a6c92 - [TTTableViewVarHeightDelegate tableView: heightForRowAtIndexPath:] + 156 7 UIKit
0x0064a6d5 - [UISectionRowData

В этом исключении вы можете видеть [TTDefaultStyleSheet myTitleFont]: unrecognized selector sent to instance 0x5b5e120, но на самом деле myTitleFont определено в XYDefaultStyleSheet, и я импортировал XYDefaultStyleSheet.h в своем классе. XYDefaultStyleSheet.h и XYDefaultStyleSheet.m похожи на

XYDefaultStyleSheet.h

#import "Three20/Three20.h"

@interface XYDefaultStyleSheet : TTDefaultStyleSheet

@property(nonatomic,readonly) UIColor* myHeadingColor;
@property(nonatomic,readonly) UIColor* mySubtextColor;
@property(nonatomic,readonly) UIColor* myTitleColor;
@property(nonatomic,readonly) UIFont* myTitleFont;
@property(nonatomic,readonly) UIFont* myHeadingFont;
@property(nonatomic,readonly) UIFont* mySubtextFont;


@end

XYDefaultStyleSheet.m

#import "XYDefaultStyleSheet.h"


///////////////////////////////////////////////////////////////////////////////////////////////////

@implementation XYDefaultStyleSheet


///////////////////////////////////////////////////////////////////////////////////////////////////
// styles

///////////////////////////////////////////////////////////////////////////////////////////////////
// public colors

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

- (UIColor*)myHeadingColor {
    return RGBCOLOR(80, 110, 140);
}

- (UIColor*)mySubtextColor {
    return [UIColor grayColor];
}


///////////////////////////////////////////////////////////////////////////////////////////////////
// public fonts

- (UIFont*)myTitleFont {
    return [UIFont boldSystemFontOfSize:16];
}

- (UIFont*)myHeadingFont {
    return [UIFont boldSystemFontOfSize:13];
}

- (UIFont*)mySubtextFont {
    return [UIFont systemFontOfSize:12];
}


@end

почему всегда говорите [TTDefaultStyleSheet myTitleFont] ... если проблема действительно myTitleFont, это должно быть [XYDefaultStyleSheet myTitleFont], почему TTDefaultStyleSheet?

Ответы [ 2 ]

1 голос
/ 24 июля 2011

понял!Инициируйте мою таблицу стилей в AppDelegate.

0 голосов
/ 26 августа 2011

Это ответ на ответ @Jason Zhao об инициализации в AppDelegate.

- (void)applicationDidFinishLaunching:(UIApplication *)application {      
    // Override point for customization after app launch   
    [TTStyleSheet setGlobalStyleSheet:[[[CustomDefaultStyleSheet alloc]  
                                        init] autorelease]];  

    [window addSubview:[navigationController view]];  
    [window makeKeyAndVisible];  
}  

Исходный код отсюда содержит много полезной информации об использовании TTStyleSheet:

Учебник для iPhone по трем20 стилям

...