簡體   English   中英

執行某些代碼后如何為UIButton分配其他選擇器(取消先前的選擇器方法)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM