我已经为一个UIButton添加了多个target-action-forControlEvents:。我想去除所有这些在一个去不脱销任何东西。然后我会设定新的目标。
这可能吗?我该怎么做?
我已经为一个UIButton添加了多个target-action-forControlEvents:。我想去除所有这些在一个去不脱销任何东西。然后我会设定新的目标。
这可能吗?我该怎么做?
当前回答
如果选择器是有条件的,则可以更改它。 请看下面的例子
您可以先删除所有目标,然后选择选择器并添加它。
rateButton。removeTarget(nil,动作:nil, for: .allEvents)
let action = interview.isRated ? #selector(viewTapped(_:)) : #selector(rateTapped(_:))
rateButton.addTarget(self, action: action, for: .touchUpInside)
其他回答
Swift 3,4,5:
btnCancel.removeTarget(nil, action: nil, forControlEvents: UIControlEvents.AllEvents)
@ program在Swift 2中的回答:
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Swift 3:
button.removeTarget(nil, action: nil, for: .allEvents)
注意:Swift没有NULL,所以我测试用nil替换它,它似乎工作得很好。
调用removeTarget:action:forControlEvents:,为目标传递nil,为动作传递NULL,并使用一个设置所有位的控制掩码(UIControlEventAllEvents)。
objective - c
[someControl removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
斯威夫特2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Swift 3或更高
button.removeTarget(nil, action: nil, for: .allEvents)
如果选择器是有条件的,则可以更改它。 请看下面的例子
您可以先删除所有目标,然后选择选择器并添加它。
rateButton。removeTarget(nil,动作:nil, for: .allEvents)
let action = interview.isRated ? #selector(viewTapped(_:)) : #selector(rateTapped(_:))
rateButton.addTarget(self, action: action, for: .touchUpInside)
斯威夫特2:
actionButton.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Swift 3和4:
actionButton.removeTarget(nil, action: nil, for: .allEvents)
objective - c:
[actionButton removeTarget: nil action: NULL forControlEvents: UIControlEventAllEvents];