当两个IBAction从相同的组件调用时,以什么顺序触发?

我有一个UIButton,我想从一个UIButton事件中调用2个不同的动作,因为那个button需要做两件事,但是我需要按照一定的顺序来做。

无论我如何尝试,似乎都无法改变动作触发的顺序。 有没有办法让我来决定这个,还是随机的?

IBActions按照什么顺序从同一个组件中被解雇? 有没有办法以特定的顺序打电话给他们?

为什么不创build一个由button调用的新方法,并以您想要的方式运行现有方法?

答案很简单,都有点奇怪。 IBActions按字母顺序调用。 看下面的例子。

下面是6 IBAction方法都打印出他们是哪种方法。

.h文件中…

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

.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"); } 

当我点击链接到所有这些button,我得到以下日志…

 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 

如果你按照字母顺序来看他们,他们被解雇如下; a, b, b, d, e, f产生所示的日志。 即使您重新安排IBActions或将其链接到不同的地方,也会生成相同的日志。

这个问题的简单答案是在你的方法名之前加上一个字母,例如aOne, bTwo, cThree ,然后按顺序调用它们,而如果你留下了One, Two, Three他们将被称为one, three, two由于这个字母顺序。

希望这有助于人们。 它让我难住了最长的时间。

订单是不确定的,您不应该依赖订单,因为它可能会在未来的操作系统更新中更改。