Dans quel ordre deux IBActions se triggersnt-ils lorsqu'ils sont appelés à partir du même composant?

J'ai un UIButton et j'essaye d'appeler 2 actions différentes d'un événement d'UIButton, puisque ce button doit faire deux choses, mais je dois les faire dans un certain ordre.

Peu importe comment j'essaie, je ne peux pas sembler changer l'ordre dans lequel les Actions tirent. Y a-t-il un moyen pour moi de décider de cela, ou est-ce random?

Dans quel ordre IBActions est-il tiré du même composant? Y a-t-il un moyen de les appeler dans un certain ordre?

Pourquoi ne pas créer une seule nouvelle méthode appelée par le button et exécuter vos methods existantes exactement comme vous le souhaitez?

La réponse à cette question est assez simple, tout cela est un peu étrange. IBActions sont appelés dans l'ordre alphabétique. Voir ci-dessous pour un exemple.

Voici ci-dessous 6 methods IBAction qui impriment toutes les methods.

Dans le file .h

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

Et dans le file .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"); } 

Quand je tape sur le button lié à tout cela, je reçois le journal suivant …

 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 vous les regardez par ordre alphabétique, ils sont tirés comme suit; a, b, b, d, e, f produisant le journal montré. Même si vous avez réorganisé les IBActions ou les liez différemment, le même journal est produit.

La réponse simple à ce problème est d'append des lettres avant vos noms de methods comme aOne, bTwo, cThree et ensuite ils seront appelés dans cet ordre, alors que si vous les aOne, bTwo, cThree One, Two, Three ils seraient appelés comme one, three, two raison de cet ordre alphabétique.

J'espère que cela aide les gens. Il m'a fait perplexe pour le plus long time.

La command est indéterminée et vous ne devez pas vous fier à la command car elle pourrait changer dans une future mise à jour du operating system.