UIButton удалить все target-действия - PullRequest
326 голосов
/ 27 июля 2010

Я добавил несколько target-action-forControlEvents: в UIB-кнопку. Я хотел бы удалить все это за один раз, ничего не освобождая. Затем я установлю новые цели.

Возможно ли это и как мне это сделать?

Ответы [ 5 ]

784 голосов
/ 27 июля 2010

Вызов removeTarget: action: forControlEvents: , передать nil для цели, NULL для действия и использовать маску управления, которая устанавливает все биты (UIControlEventAllEvents).

Objective-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)
91 голосов
/ 18 апреля 2015

@ progrmr ответ в Swift 2:

button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)

и Swift 3:

button.removeTarget(nil, action: nil, for: .allEvents)

Примечание: Swift не имеет NULL, поэтому я протестировал замену его на nil, и, похоже, он работает нормально.

6 голосов
/ 11 сентября 2015

Свифт:

btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
3 голосов
/ 19 июня 2018

Swift 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];

Надеюсь, это поможет.

2 голосов
/ 19 апреля 2016
- removeTarget:action:forControlEvents:

Этот метод останавливает доставку событий к указанному целевому объекту.

  1. Указывая действительный объект в целевом параметре, этот метод останавливаетдоставка указанных событий всем методам действий, связанным с этим объектом.

  2. Указывая nil для целевого параметра, этот метод предотвращает доставку этих событий всем действиямметоды всех целевых объектов

    target-c:

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

    swift:

    myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)
    

Подробнее https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...