2011-07-23 135 views
1

我寫了這樣的代碼:樣式表問題

+ (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心有餘[15941:B303] - [TTDefaultStyleSheet myTitleFont] :無法識別的選擇發送到實例0x5b5e120 2011-07-24 03:10:18.765新友[15941:B303] *終止應用程序由於 未捕獲的異常 'NSInvalidArgumentException',原因: 「 - [TTDefaultStyleSheet myTitleFont]:無法識別一個選擇器S耳鼻喉科 實例0x5b5e120' *在第一擲調用堆棧:(0的CoreFoundation
0x0119a5a9 exceptionPreprocess + 185 1 libobjc.A.dylib
0x012ee313 objc_exception_throw + 44 2的CoreFoundation
0x0119c0bb - [NSObject的(NSObject的)doesNotRecognizeSelector: ] + 187 3
的CoreFoundation 0x0110b966 __ 轉發
+ 966 4的CoreFoundation 0x0110b522 _CF_forwarding_prep_0 + 50 5新友
0x000081f9 + [CustomTTTableSubtitleItemCell 的tableView:rowHeightForObject:] + 186 6新友
0x000a6c92 - [TTTableViewVarHeightDelegate 的tableView:heightForRowAtIndexPath:] + 156 7的UIKit
0x0064a6d5 - [UISectionRowData

在這種異常可以看到[TTDefaultStyleSheet myTitleFont]: unrecognized selector sent to instance 0x5b5e120但在實際上myTitleFont定義XYDefaultStyleSheet,我在課堂上輸入XYDefaultStyleSheet.hXYDefaultStyleSheet.hXYDefaultStyleSheet.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

回答

0

這是@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的:

Three20 Stylesheets iPhone Tutorial

+0

謝謝夥計,我工作了,就像你做 –

+0

不用擔心@Jason趙。樂意效勞。 – fuzz

1

明白了!在AppDelegate中初始化我的樣式表。