我有一个 UIButton,我试图从一个 UIButton 事件中调用 2 个不同的操作,因为该按钮需要做两件事,但我需要按照一定的顺序来做。
无论我如何尝试,我似乎都无法更改动作触发的顺序。有没有办法让我决定这个,还是随机的?
IBActions 从同一个组件中以什么顺序被触发?有没有办法按特定顺序调用它们?
我有一个 UIButton,我试图从一个 UIButton 事件中调用 2 个不同的操作,因为该按钮需要做两件事,但我需要按照一定的顺序来做。
无论我如何尝试,我似乎都无法更改动作触发的顺序。有没有办法让我决定这个,还是随机的?
IBActions 从同一个组件中以什么顺序被触发?有没有办法按特定顺序调用它们?
为什么不创建一个由按钮调用的新方法,并完全按照您想要的方式运行现有方法?
答案很简单,只是有点奇怪。IBAction 按字母顺序调用。请参阅下面的示例。
下面是 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");
}
当我点击链接到所有这些的按钮时,我得到以下日志......
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
生成显示的日志。即使您重新排列 IBAction 或以不同方式链接它们,也会生成相同的日志。
这个问题的简单答案是在您的方法名称之前添加字母,例如aOne, bTwo, cThree
,然后它们将按该顺序调用,而如果您离开它们,One, Two, Three
它们将按one, three, two
字母顺序调用。
希望这对人们有所帮助。它让我难过最长的时间。
该订单是不确定的,您不应依赖该订单,因为它可能会在未来的操作系统更新中发生变化。