2011-10-17 54 views
1

我一直在尋找解決方案,但我似乎無法找到它。我在界面上有兩個按鈕。兩者都調用相同的動作。有沒有辦法找出哪個按鈕引發了這個事件?我對iPhone開發很陌生,所以請給我一些指導,即使它看起來太瑣碎。ios找出事件發生的按鈕

問候

khizar

回答

6

在每個事件中你都有(id)sender參數,它是觸發事件的對象。你可以把它比作你這樣的一個按鈕:

-(IBAction)clicked:(id)sender { 
    if ((UIButton *)sender == myButton1) { 
     // you have clicked button 1 
    } 
} 

您還可以設置您的按鈕tag財產,並檢查該參數點擊功能:

myButton1.tag = 1; 
myButton2.tag = 2; 
-(IBAction)clicked:(id)sender { 
    if ([[sender] tag] == 1) { 
     // you have clicked button 1 
    } 
} 
3

你的方法是-(void)buttonClicked:(id)sender,其中發送者是被點擊的按鈕。把它扔到UIButton &不用你了!要識別它是哪個按鈕,請在創建按鈕&時檢查此方法中的標記,設置標記屬性。

1

你應該有兩個按鈕在您的.h文件中聲明,然後在您的方法中,您可以通過將發件人轉換爲UIButton來執行以下操作。因爲我們使用指針,所以我們可以檢查內存地址以知道發送按鈕是什麼。這是我的頭頂。甚至可能沒有必要投發件人...

.h文件中

UIButton* button1; 
UIButton* button2; 

.m文件

-(void) someMethod:(id)sender 
{ 
    if((UIButton*)sender == button1) 
    { 
     //code for button1 
    } 
    else if((UIButton*)sender == button2) 
    { 
     //code for button2 
    } 
} 
0

您可以分配唯一的標籤給每個按鈕。假設你有兩個按鈕(Button1和Button2)。您可以通過執行以下操作通過故事板或代碼分配標籤。現在

button1.tag =1; 
button2.tag =2; 

,在你的操作方法,你可以檢查,如果發件人是一個按鈕,如果是的話,採取臨時按鈕,將其設置爲發送者。當然,您必須將發件人作爲UIButton進行投放。現在,您可以檢查哪個按鈕被點擊。示例代碼 -

-(IBAction)buttonClicked:(id)sender{ 

if([sender isKindOfClass:[UIButton class]]){ 
    UIButton *tempButton = (UIButton*)sender; 

    if(tempButton.tag == 1){ 
     NSLog(@"Button1 is clicked"); 
    } 
    else if(tempButton.tag == 2){ 
     NSLog(@"Button2 is clicked"); 
    } 
    } 
}