Iphone 如何在执行某些代码后为UIButton分配不同的选择器(取消以前的选择器方法)

Iphone 如何在执行某些代码后为UIButton分配不同的选择器(取消以前的选择器方法),iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,我有一个按钮名“button1” 我已经为它指定了一个选择器,如下所示 [button1 addTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside]; 现在,在我完成了某些代码的执行之后。我希望这个方法“按钮按下方法:”不再参与游戏 我想分配一个不同的选择器方法。说 [button1 addTarget:self action:@selector(dumm

我有一个按钮名“button1” 我已经为它指定了一个选择器,如下所示

[button1 addTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];
现在,在我完成了某些代码的执行之后。我希望这个方法“按钮按下方法:”不再参与游戏

我想分配一个不同的选择器方法。说

[button1 addTarget:self action:@selector(dummymethod:) forControlEvents:UIControlEventTouchUpInside];
我现在得到的是

这两种方法都被调用。我希望一次只调用一个方法。
请给出取消选择器方法的一些建议

在添加新目标之前删除第一个目标:

[button1 removeTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];

维护一个布尔标志。当需要调用第一个选择器时:

if(flag==True)
{
[button1 addTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];
}
在那之后,在你想要的地方使旗子假

if(flag==false)
{
[button1 addTarget:self action:@selector(dummymethod:) forControlEvents:UIControlEventTouchUpInside];
}

试着简单一点。创建一个方法并将Target添加到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

这涉及到保持额外的状态,并且可能会导致未来的头痛,试图找出原因。当您有
删除目标:操作:for控件事件:
时,没有理由这样做。是的,您可以编写。在我的一个例子中,我是这样做的。为什么不在UIControlEventTouchUpInside和UIControlEventTouchDragOutside@VigneshKumar对不起,兄弟。。无论如何,谢谢你的回复:)