web-dev-qa-db-fra.com

UIButton supprime toutes les actions-cibles

J'ai ajouté plusieurs target-action-forControlEvents: à un UIButton. Je voudrais supprimer tous ces éléments en une seule fois sans rien désaffecter. Je fixerai ensuite de nouveaux objectifs.

Est-ce possible et comment puis-je m'y prendre?

329
SK9

Appelez removeTarget: action: forControlEvents: , transmettez nil pour la cible, NULL pour action et utilisez un masque de contrôle définissant tous les bits (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)
791
progrmr

La réponse de @ progrmr dans Swift 2:

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

et Swift 3:

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

Remarque: Swift n'a pas NULL, j'ai donc essayé de le remplacer par nil et cela semble fonctionner correctement.

91
Hlung

Rapide:

btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
6
Iya

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

J'espère que ça aide.

3
Riajur Rahman
- removeTarget:action:forControlEvents:

Cette méthode arrête la livraison d'événements à l'objet cible spécifié.

  1. Spécifiant un objet valide dans le paramètre target, cette méthode arrête la diffusion des événements spécifiés à toutes les méthodes d'action associées à cet objet.

  2. Spécifiant nil pour le paramètre cible, cette méthode empêche la remise de ces événements à toutes les méthodes d'action de tous les objets cible.

    objectif-c:

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

    Rapide:

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

Pour plus de détails https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//Apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents =:

2
Uday.M