Ich habe einem UIButton mehrere target-action-forControlEvents: hinzugefügt. Ich möchte all dies auf einmal entfernen, ohne etwas freizugeben. Ich werde dann neue Ziele setzen.
Ist das möglich und wie gehe ich vor?
Rufen Sie removeTarget: action: forControlEvents: auf , übergeben Sie nil für das Ziel, NULL für action und verwenden Sie eine Kontrollmaske, die alle Bits setzt (UIControlEventAllEvents).
Ziel 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)
Antwort von @progrmr in Swift 2:
und Swift 3:
Hinweis: Swift hat keine
NULL
, also habe ich getestet, es durch zu ersetzen,nil
und es scheint gut zu funktionieren.quelle
removeTarget(nil, action: nil, for: .allEvents)
nil
oderNULL
zu beiden den ersten und zweiten Argumenten in Objective-C zu, und es wird funktionieren. Ich glaube, beide sind definiert als(void*) 0
(oder zumindest als gleich bewertet).Schnell:
quelle
Swift 2:
Swift 3 & 4:
Ziel c:
Ich hoffe es hilft.
quelle
Diese Methode stoppt die Übermittlung von Ereignissen an das angegebene Zielobjekt.
Durch Angabe eines gültigen Objekts im Zielparameter stoppt diese Methode die Übermittlung der angegebenen Ereignisse an alle diesem Objekt zugeordneten Aktionsmethoden.
Diese Methode gibt nil für den Zielparameter an und verhindert die Übermittlung dieser Ereignisse an alle Aktionsmethoden aller Zielobjekte
Ziel c:
schnell:
Weitere Informationen finden Sie unter https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents :
quelle