我已将多个target-action-forControlEvents:添加到UIButton。我想一次性删除所有这些,而不释放任何东西。然后我会设定新的目标。
这是可能的,我该如何解决?
答案 0 :(得分:777)
调用removeTarget:action:forControlEvents:,为目标传递nil,为操作传递NULL,并使用设置所有位的控制掩码(UIControlEventAllEvents)。
<强>目标C 强>
[someControl removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
Swift 2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Swift 3
button.removeTarget(nil, action: nil, for: .allEvents)
答案 1 :(得分:91)
@ progrmr在Swift 2中的答案:
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
和Swift 3:
button.removeTarget(nil, action: nil, for: .allEvents)
注意:Swift没有NULL
,所以我测试用nil
替换它,它似乎工作正常。
答案 2 :(得分:6)
夫特:
btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
答案 3 :(得分:3)
Swift 2:
actionButton.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Swift 3&amp; 4:强>
actionButton.removeTarget(nil, action: nil, for: .allEvents)
<强>目标-C:强>
[actionButton removeTarget: nil action: NULL forControlEvents: UIControlEventAllEvents];
希望它有所帮助。
答案 4 :(得分:2)
- removeTarget:action:forControlEvents:
此方法停止将事件传递到指定的目标对象。
在target参数中指定有效对象,此方法会停止将指定事件传递给与该对象关联的所有操作方法。
为target参数指定 nil ,此方法可防止将这些事件传递到所有目标对象的所有操作方法
<强>目标c 强>
[_myButton removeTarget: //any validObject (or) nil
action:nil
forControlEvents:UIControlEventAllEvents];
<强>迅速:强>
myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)