UIButton删除所有目标操作

时间:2010-07-27 04:50:15

标签: ios uibutton

我已将多个target-action-forControlEvents:添加到UIButton。我想一次性删除所有这些,而不释放任何东西。然后我会设定新的目标。

这是可能的,我该如何解决?

5 个答案:

答案 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:

此方法停止将事件传递到指定的目标对象。

  1. 在target参数中指定有效对象,此方法会停止将指定事件传递给与该对象关联的所有操作方法。

  2. 为target参数指定 nil ,此方法可防止将这些事件传递到所有目标对象的所有操作方法

    <强>目标c

    [_myButton removeTarget:  //any validObject (or) nil
                  action:nil
        forControlEvents:UIControlEventAllEvents]; 
    

    <强>迅速:

    myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)
    
  3. 有关详情https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents