item icon buttons ios objective-c uibutton components ibaction

ios - icon - ¿Qué orden disparan dos IBActions cuando se llama desde el mismo componente?



ionic header (3)

¿Por qué no crear un método único y nuevo que el botón invoca y ejecuta sus métodos existentes exactamente de la manera que desea?

Tengo un UIButton y estoy tratando de llamar a 2 acciones diferentes desde un evento UIButton, ya que ese botón necesita hacer dos cosas, pero tengo que hacerlas en cierto orden.

No importa cuánto lo intente, parece que no puedo cambiar el orden en el que se activan las Acciones. ¿Hay alguna manera de que yo decida esto o es aleatorio?

¿En qué orden se despiden IBActions del mismo componente? ¿Hay alguna manera de llamarlos en cierto orden?


El pedido es indeterminado y no debe confiar en el pedido, ya que puede cambiar en una futura actualización del sistema operativo.


La respuesta a esto es bastante simple, todo sea un poco extraño. IBActions se llaman en orden alfabético. Vea abajo para un ejemplo.

A continuación hay 6 métodos de IBAction que muestran qué método son.

En el archivo .h ...

- (IBAction)a:(id)sender; - (IBAction)b:(id)sender; - (IBAction)c:(id)sender; - (IBAction)d:(id)sender;

Y en el archivo .m ...

- (IBAction)a:(id)sender { NSLog(@"a"); } - (IBAction)b:(id)sender { NSLog(@"b"); } - (IBAction)c:(id)sender { NSLog(@"c"); } - (IBAction)d:(id)sender { NSLog(@"d"); }

Cuando toco el botón vinculado a todos estos, obtengo el siguiente registro ...

2013-06-05 18:06:52.637 TestIBAction[49798:c07] a 2013-06-05 18:06:52.637 TestIBAction[49798:c07] b 2013-06-05 18:06:52.637 TestIBAction[49798:c07] c 2013-06-05 18:06:52.637 TestIBAction[49798:c07] d

Si los miras por orden alfabético, los despiden de la siguiente manera; a, b, b, d, e, f produciendo el registro que se muestra. Incluso si reorganizó las IBActions o las vinculó de manera diferente, se genera el mismo registro.

La respuesta simple a este problema es agregar letras antes de los nombres de sus métodos como aOne, bTwo, cThree y luego se aOne, bTwo, cThree en ese orden, mientras que si los dejara One, Two, Three se llamarían one, three, two debido a este orden alfabético.

Espero que esto ayude a la gente. Me había dejado perplejo por mucho tiempo.