[英]How to assign a different selector (canceling previous selector method) for a UIButton after execution of some codes
我有一個按鈕名稱“ button1”,我為它指定了一個選擇器,如下所示
[button1 addTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];
現在,在我完成某些代碼的執行之后。 我希望此方法“ buttonPressedMethod:”不再參與播放。
我想分配一個不同的選擇器方法。 說
[button1 addTarget:self action:@selector(dummymethod:) forControlEvents:UIControlEventTouchUpInside];
我現在得到的是。
兩種方法都被調用。 我只想一次只調用一種方法。 請提出一些取消選擇器方法的建議。
在添加新目標之前,先刪除第一個目標:
[button1 removeTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];
嘗試簡單即可。 創建一個方法並將目標添加到button1,然后執行條件檢查以調用另一個方法,例如
-(void)button1Clicked:(id)sender{
if(check_your_Condition==true) { [self previousMethod];}
else { [self laterMethod];}
}
有一個變量來跟蹤按鈕的當前動作。
SEL currentAction;
// assign action to button using this
currentAction = @selector (newAction:);
[button1 addTarget: self action: currentAction forControlEvents: UIControlEventTouchUpInside];
// remove previous action action before assigning new one
if (currentAction)
{
[button1 removeTarget: self action: currentAction forControlEvents: UIControlEventTouchUpInside];
}
// and then reassign action like explained above
保持一個布爾值標志。 當您要呼叫第一個選擇器時:
if(flag==True)
{
[button1 addTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];
}
之后,在需要的位置將標志設為false。
if(flag==false)
{
[button1 addTarget:self action:@selector(dummymethod:) forControlEvents:UIControlEventTouchUpInside];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.