Я написал код вроде:
+ (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
?