2012-05-18 65 views
0

當我實例化這個按鈕類時,是否可以發送額外的參數,如下所示:?在UIButton實例中發送額外的參數

BttClass *myButton = [[BttClass alloc] init]; 

如果是這樣,什麼是正確的語法?我一直在嘗試各種! 我想發送一個BOOL和一個字符串。 謝謝。

+0

我的第一個問題是爲什麼?如果你遵循'MVC'原則,你不需要添加任何額外的信息來查看,這些應該在你的模型中。只是我對這個問題的想法。 – rckoenes

+0

也許按鈕需要(好吧也許不需要,但'想')要足夠聰明來改變它的標題,它使用這些參數來做到這一點? – Damo

+0

達摩是對的,我正在製作一個自定義按鈕。由於設計原因,常規自定義選項將無法使用。 (不可否認,也許UIButton對我來說不是正確的選擇,也許我應該使用UIControl,或者別的。) –

回答

2

通過繼承其擴展的UIButton。

//MyButton.h 
@interface MyButton : UIButton { 

} 

@property (nonatomic, strong) NSString* aString; 
@property (nonatomic, weak) BOOL aBool; 

您需要定義一個初始化器方法

-(id)initWithStringValue:(NSString *)stringValue andWithBoolValue:(bool)boolValue; 

然後實現初始化器方法

//MyButton.m 
-(id)initWithStringValue:(NSString *)stringValue andWithBoolValue:(bool)boolValue { 
    self = [super init]; 
    if (self) { 
     self.aString = stringValue; 
     self.aBool = boolValue; 
    } 
    return self; 
} 

在調用類的代碼看起來像

MyButton* myButton = [[MyButton alloc] initWithStringValue:@"tralala" andWithBoolValue:YES]; 
+0

感謝達摩,這個作品很棒。 –

+0

如果它幫助,然後標記/接受答案總是讚賞;-) – Damo

0

只要定義一個定製的初始化和傳遞自己的價值觀:

- (id)initWithBoolValue:(bool)boolValue stringValue:(NSString *)stringValue { 
    self = [super init]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 
+0

謝謝melsam。需要知道如何調用它。 (由Damo回答。) –

0

CustomButton.h

@interface CustomButton : UIButton 

    - (id)initWithBooleanValue:(BOOL)value; 

@end 

,並在您 創建自定義按鈕

CustomButton.m

- (id)initWithBooleanValue:(BOOL)value 
{ 
    self = [super init]; 
    if (self) 
    { 
     NSLog(@"Bool = %d",value); 
    } 
    return self; 
} 

你可以取代一般的UIButton

的使用這個類
+0

謝謝Aatish。需要知道如何調用它。 (由達摩回答。) –

相關問題