titlelabel color buttons ios swift uibutton

color - menu ios



¿Es posible anular el método de acción para UIButton en Swift? (4)

A medida que agregaste el objetivo, puedes eliminarlo usando el método removeTarget en tu botón:

func removeTarget(_ target: AnyObject?, action action: Selector, forControlEvents controlEvents: UIControlEvents)

EDITAR : Ver la respuesta de @Rohit KP por ejemplo de uso. Sin embargo, es posible que desee considerar el uso de otra cosa que ''.AllEvents'', según lo que necesite.

Tengo un UIButton . Quiero usar el mismo UIButton para ejecutar múltiples acciones. Primero estoy configurando la acción a un botón programáticamente.

button1.addTarget(self, action: #selector(ViewController.function1), forControlEvents: .TouchUpInside)

A continuación, deseo descartar esa función y quiero agregar otra acción.

button1.addTarget(self, action: #selector(ViewController.function2), forControlEvents: .TouchUpInside)

¿Es posible anular el objetivo existente para el botón?


Debes eliminar la acción anterior del objetivo antes de agregar otra nueva, provocará que ambas acciones se desencadenen

button1.removeTarget(self, action: #selector(ViewController.function1), forControlEvents: .AllEvents)


El caso que sugirió no anulará la acción anterior, sino que agregará la segunda acción al botón, lo que ViewController.function1 como resultado que se llame a ViewController.function1 y ViewController.function2 .

Debe eliminar la acción anterior del objetivo antes de agregar una nueva mediante el uso de

button1.removeTarget(self, action: #selector(ViewController.function1), forControlEvents: .AllEvents)

O elimine todas las acciones anteriores antes de agregar la nueva

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


Te recomiendo que crees una función de envoltura. Debido a que agregar / eliminar el objetivo dinámicamente puede conducir a un bloqueo muerto.

Por lo tanto, probablemente deba crear una función que siempre será llamada y hacer sus cosas en:

@IBOutlet func myWrapper(sender : AnyObject?) { if (conditionA) { // do stuff A } else { // do stuff B } }