Eu adicionei vários target-action-forControlEvents: a um UIButton. Gostaria de remover tudo isso de uma só vez, sem desalocar nada. Vou então definir novos alvos.
Isso é possível e como faço para fazer isso?
Chame removeTarget: action: forControlEvents:, passe nulo para o destino, NULL para ação e use uma máscara de controle que define todos os bits (UIControlEventAllEvents).
Objetivo-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)
A resposta de @ progrmr no Swift 2:
e Swift 3:
Nota: Swift não possui
NULL
, então testei substituí-lonil
e parece funcionar bem.fonte
removeTarget(nil, action: nil, for: .allEvents)
nil
ouNULL
para ambos os primeiro e segundo argumentos em Objective-C também, e ele vai trabalhar. Eu acredito que ambos são definidos como(void*) 0
(ou pelo menos, avaliar como iguais).Rápido:
fonte
Swift 2:
Swift 3 e 4:
Objetivo-C:
Espero que ajude.
fonte
Este método interrompe a entrega de eventos para o objeto de destino especificado.
Especificando um objeto válido no parâmetro target, esse método interrompe a entrega dos eventos especificados para todos os métodos de ação associados a esse objeto.
Especificando zero para o parâmetro target, esse método impede a entrega desses eventos a todos os métodos de ação de todos os objetos de destino.
objetivo-c:
rápido:
Para obter mais detalhes https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents :
fonte