【发布时间】:2015-03-15 23:48:19
【问题描述】:
如何让UIButton 在按下时完成两个单独的方法?
【问题讨论】:
如何让UIButton 在按下时完成两个单独的方法?
【问题讨论】:
如果您在 Interface Builder(故事板或 xib)中设计视图控制器,我们可以将我们的按钮与我们想要的任意数量的操作挂钩。
使用 ctrl+drag 方法,我们创建一个处理按钮按下的方法:
而且我们可以将任意多的方法连接到任意多的不同操作:
这里,这个按钮连接了三种不同的方法。
我们可以以编程方式在代码中做同样的事情。
在 Swift 中:
myButton.addTarget(self, action: "methodOne:", forControlEvents:.TouchUpInside)
myButton.addTarget(self, action: "methodTwo:", forControlEvents:.TouchUpInside)
myButton.addTarget(self, action: "methodThree:", forControlEvents:.TouchUpInside)
或者在 Objective-C 中:
[myButton addTarget:self
action:@selector(methodOne:)
forControlEvents:UIControlEventTouchUpInside];
[myButton addTarget:self
action:@selector(methodTwo:)
forControlEvents:UIControlEventTouchUpInside];
[myButton addTarget:self
action:@selector(methodThree:)
forControlEvents:UIControlEventTouchUpInside];
我们可以连接任意数量的事件。
最后一点,我不确定是否有任何方法可以实际控制直接连接到按钮的方法的调用顺序。在这种情况下,我按顺序将按钮连接到方法:one、two、three,但它们的调用顺序似乎不同:one、three、two。它们始终按此顺序调用。
如果顺序真的很重要,那么我们应该将按钮连接到一个方法,然后按照我们需要的显式顺序调用所有其他方法:
@IBAction func buttonPress(sender: AnyObject) {
self.methodOne(sender)
self.methodTwo(sender)
self.methodThree(sender)
}
老实说,我想说这应该是推荐的方法。它可能使源代码更易于阅读。
【讨论】: