我一直在尋找解決方案,但我似乎無法找到它。我在界面上有兩個按鈕。兩者都調用相同的動作。有沒有辦法找出哪個按鈕引發了這個事件?我對iPhone開發很陌生,所以請給我一些指導,即使它看起來太瑣碎。ios找出事件發生的按鈕
問候
khizar
我一直在尋找解決方案,但我似乎無法找到它。我在界面上有兩個按鈕。兩者都調用相同的動作。有沒有辦法找出哪個按鈕引發了這個事件?我對iPhone開發很陌生,所以請給我一些指導,即使它看起來太瑣碎。ios找出事件發生的按鈕
問候
khizar
在每個事件中你都有(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
}
}
你的方法是-(void)buttonClicked:(id)sender
,其中發送者是被點擊的按鈕。把它扔到UIButton
&不用你了!要識別它是哪個按鈕,請在創建按鈕&時檢查此方法中的標記,設置標記屬性。
你應該有兩個按鈕在您的.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
}
}
您可以分配唯一的標籤給每個按鈕。假設你有兩個按鈕(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");
}
}
}