2010-07-27 23 views
295

He agregado múltiples target-action-forControlEvents: a un UIButton. Me gustaría eliminar todo esto de una vez sin desasignar nada. Luego estableceré nuevos objetivos.UIButton eliminar todas las acciones de destino

¿Es esto posible y cómo lo hago?

Respuesta

719

Llamar removeTarget:action:forControlEvents:, pasar nil para el destino, NULL para la acción, y usar una máscara de control que establece todos los 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) 
+4

¡Gracias por la sugerencia! Aquí está el enlace completo, creo (es decir, a la sección): "http://developer.apple.com/iphone/library/documentation/uikit/reference/UIControl_Class/Reference/Reference.html#//apple_ref/occ/instm/UIControl/removeTarget: action: forControlEvents: " – SK9

+1

La sugerencia del progrmr funciona, por supuesto.Para agregar a la respuesta aquí hay un fragmento de código como el que necesitaba: [button removeTarget: nil acción: NULL forControlEvents: UIControlEventTouchUpInside]; – SK9

+6

Aparte: el método de instancia -todos losTargets devuelve un NSSet de todos los destinos de la instancia (nada si ninguno). – SK9

91

@ respuesta de progrmr en Swift 2:

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

y Swift 3:

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

Nota: Swift no tiene NULL, así que probó su sustitución por nil y parece que funciona bien.

+5

Para Swift 3: ".AllEvents" ahora es ".allEvents" (con una 'a' minúscula): 'removeTarget (nil, action: nil, for: .allEvents)' – Sasho

+0

En cuanto a su NOTA: En realidad, le creo podría pasar 'nil' o' NULL' a ** ambos ** los argumentos primero y segundo en Objective-C también, y funcionará. Creo que ambos se definen como '(void *) 0' (o al menos, se evalúan como iguales). –

+0

@Sasho Me encantaría ver algunas estadísticas sobre cuánto descienden los tamaños de los archivos fuente (en promedio) al actualizar a Swift 3 :-) (debido a las nuevas reglas de denominación de método/argumento). –

6

Swift:

btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents) 
+0

indique el idioma que cubre –

+0

@ JuanPabloBoero, es rápido – Iya

2
- removeTarget:action:forControlEvents: 

Este método se detiene la entrega de eventos al objeto de destino especificado.

  1. Especificación de un objeto válido en el parámetro objetivo, este método se detiene la entrega de los eventos especificados a todos los métodos de acción asociados con ese objeto.

  2. Especificación nil para el parámetro objetivo, este método evita la entrega de esos eventos a todos los métodos de acción de todos los objetos de destino

    objetivo-c:

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

    rápido:

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

Para más detalles https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents:

Cuestiones relacionadas