2010-04-07 62 views
3

我在我的應用程序中有多個UIButtons。我也使用interfacebuilder。在我.hi有這樣的事情將多個按鈕連接到一個動作?

IBOutlet UIButton *button1; 
    IBOutlet UIButton *button2; 
    IBOutlet UIButton *button3; 
    - (IBAction)buttonPressed; 

然後在我的MI想要做這樣的事情

- (IBAction)buttonPressed { 


if (theButtonIpressed == button1) 

{ 

// do something if 

} 

} 

的問題是我沒有所謂的「theButtonIpressed」所以​​我不能這樣做。我的if語句應該是什麼樣子?我不想爲每個按鈕做一個 - (IBAction)。有什麼我可以確定哪個按鈕被按下?謝謝!

感謝,

-David

+0

@大衛 - 爲什麼不能有其他'IBAction's?您的代碼將通過多種方法更容易維護。 – 2010-04-07 02:20:02

+0

如果他們都做非常類似的事情,則不是。這導致了很多重複的代碼,對吧? – willc2 2010-04-14 11:47:21

+0

按照這個答案.http://stackoverflow.com/questions/16050516/how-to-connect-multiple-buttons-in-a-storyboard-to-a-single-action/24842728#24842728 – 2014-07-26 07:21:44

回答

4

您還可以在界面構建器中爲每個按鈕設置標籤屬性,然後使用它來查找哪個按鈕被按下....這也意味着您不需要定義所有按鈕引用(UIButton ),並跟蹤它們的代碼....

- (void) doSomething:(id)sender { 

    int buttonPressed = [sender tag]; 

    switch (buttonPressed) { 
     case 0:.... 
     // etc 
    } 
} 
2

定義您- (IBAction)buttonPressed到:

- (IBAction)buttonPressed: (UIButton *) buttonIpressed 

然後它會奏效。

+0

也感謝您的幫助。 – bobbypage 2010-04-07 02:27:20

1

- (IBAction)buttonPressed:(UIButton*)button

但是,如果你正在做的事情爲每個按鈕,然後做了正確的方式不同的是創建單獨的IBActions。

+0

感謝您的幫助。 – bobbypage 2010-04-07 02:30:53

0

可以使用標記值每個按鈕

IBOutlet UIButton *button1; 
button1.tag = 100; 
IBOutlet UIButton *button2; 
button2.tag = 200; 
IBOutlet UIButton *button3; 
button3.tag = 300; 

- (IBAction)buttonPressed:(id)sender 
{ 
    if ([sender tag]==100) 
    { 
    NSLOG("button1"); 
    } 
    else if([sender tag]==200) 
    { 
    NSLOG("button2"); 
    } 
    else { 
    NSLOG("button3"); 
    } 

} 
相關問題