如果我从故事板中的同一个按钮创建两个(或更多)IBAction,那么它们执行的相对顺序是什么?我有这样的情况:
@IBAction func foo(sender: UIButton) {
//does something based on value of variable x
}
@IBAction func bar(sender: UIButton) {
//changes variable x
}
我已阅读this并且它表示按字母顺序调用IBoutlet,但行为可能会发生变化。 Swift目前的行为是什么?
答案 0 :(得分:1)
正如你所说,未来可能会发生变化。为什么不在一个功能中做所有事情?仅使用一次动作没有区别。您可以使用if-else,switch语句等来确保一切都初始化正常。但是你现在拥有的就像你想要的一样:
@IBAction func fooBar(sender: UIButton) {
//changes variable x
//does something based on value of variable x
}
此外,你不应该依赖这样一个事实,即行动将按字母顺序调用。它可以在将来的更新中进行更改,如果您依赖它,则必须进行许多不必要的更改才能使代码再次运行。
答案 1 :(得分:0)
不要依赖单个事件处理的应用程序逻辑。 IBAction
的{{1}}将在touchesBegan
IBAction
之前触发(例如),因此您隐式推断状态:一个将在另一个之前发生。这是将多个操作连接到单个控件的方法。
每个事件应该只有一个touchesEnded
,因为它只执行一个功能:让你知道用户做了什么。然后由您决定如何处理该信息。如果您可以指定执行操作的顺序,那么也可以编写一个以该顺序执行并将其放入IBAction