2012-02-09 35 views
2

您如何使方法跨多個視圖工作?例如。我創建了這個:iOS 5 SDK創建無處不在的方法

- (void)setPageTitle:(UILabel *)title withText:(NSString *)text 
{ 
    UIColor *pageTextColor = [UIColor colorWithRed:18.0/255.0 green:79.0/255.0 blue:118.0/255.0 alpha:1.0]; 

    // Set page title 
    UIFont *font = [UIFont fontWithName:@"PassionOne-Regular" size:23]; 
    [title setFont:font]; 
    [title setText: text]; 
    title.textColor = pageTextColor; 
    title.shadowColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0]; 
    title.shadowOffset = CGSizeMake(0, 1); 

    CGRect titleRect = [title textRectForBounds:title.bounds limitedToNumberOfLines:999]; 
    CGRect tr = title.frame; 
    tr.size.height = titleRect.size.height; 
    title.frame = tr; 
} 

我想能夠在不同的視圖中調用UILabels上的setPageTitle方法。我如何去做這件事?我在哪裏放這個代碼來使它工作?我只想把它放在1個文件中,讓它在不同的視圖中工作。謝謝。

+0

是所有*您的意見*相同的自定義類型? – 2012-02-09 20:36:22

+0

是的,他們都是自定義的。 – Ross 2012-02-09 20:37:25

+0

如果它們都具有通用的自定義類型,那麼一個簡單的實例方法就可以實現,不是嗎? – 2012-02-09 20:43:11

回答

9

我會建議使這個UIView類的類別。

的UIView + PageTitle.h

@interface UIView (PageTitle) 
- (void)setPageTitle:(UILabel *)title withText:(NSString *)text; 
@end 

的UIView + PageTitle.m

#import "UIView+PageTitle.h" 
@implementation UIView (PageTitle) 
- (void)setPageTitle:(UILabel *)title withText:(NSString *)text { 
    // your implementation 
} 
@end 
+0

立即嘗試... – Ross 2012-02-09 20:49:54

+0

當我在我的視圖中調用它時,我應該這樣做:[self setPageTitle:pageTitle withText:@「My text。」]; – Ross 2012-02-09 20:54:36

+0

是的。請務必導入類別標題才能正常工作。#import「UIView + PageTitle.h」 – picciano 2012-02-09 21:00:42

0

添加快捷方式是添加一個 '+' 使得它在另一個類的靜態方法:

UIKitUtilities.h

+ (void)setPageTitle:(UILabel *)title withText:(NSString *)text;

而在M檔:

+ (void)setPageTitle:(UILabel *)title withText:(NSString *)text { ...your code here... }

+0

我是否應該導入我想在其中使用的視圖中創建的文件的.h文件? – Ross 2012-02-09 20:41:22

+0

是的,這是正確的。雖然該類別根據您的意見更好。 – TigerCoding 2012-02-09 21:17:02

1

你可能要找的是要麼創建一個UIViewController的子類(我相信是你正在使用的),並將它作爲你的類MyUIViewController作爲一種方法,或者,你可以創建一個類別的UIViewController並添加該方法。 Here是關於如何創建類別的說明,以及一些有用的信息。類別是類的功能的擴展,幾乎是你想要做的。

1

如果你想使用一個category你至少應該創建一個有用的類別。不使用self的類別中的實例方法錯位。

由於您操縱的是UILabel,因此您應該製作一個UILabel類別。

@interface UILabel (PageTitle) 
- (void)setPageTitle:(NSString *)text { 
    UIColor *pageTextColor = [UIColor colorWithRed:18.0/255.0 green:79.0/255.0 blue:118.0/255.0 alpha:1.0]; 

    // Set page title 
    UIFont *font = [UIFont fontWithName:@"PassionOne-Regular" size:23]; 
    [self setFont:font]; 
    [self setText: text]; 
    self.textColor = pageTextColor; 
    self.shadowColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0]; 
    self.shadowOffset = CGSizeMake(0, 1); 

    CGRect titleRect = [self textRectForBounds:self.bounds limitedToNumberOfLines:999]; 
    CGRect tr = self.frame; 
    tr.size.height = titleRect.size.height; 
    self.frame = tr; 
} 
@end 

使用這樣的:

UILabel *myLabel; 
[myLabel setPageTitle:@"Foobar"];