如何让 UIButton 一次做两件事?

Posted

技术标签:

【中文标题】如何让 UIButton 一次做两件事?【英文标题】:How to make a UIButton do two things at once? 【发布时间】:2015-03-15 23:48:19 【问题描述】:

如何让UIButton 在按下时完成两个单独的方法?

【问题讨论】:

【参考方案1】:

如果您在 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];

我们可以连接任意数量的事件。


最后一点,我不确定是否有任何方法可以实际控制直接连接到按钮的方法的调用顺序。在这种情况下,我按顺序将按钮连接到方法:onetwothree,但它们的调用顺序似乎不同:onethreetwo。它们始终按此顺序调用。

如果顺序真的很重要,那么我们应该将按钮连接到一个方法,然后按照我们需要的显式顺序调用所有其他方法:

@IBAction func buttonPress(sender: AnyObject) 
    self.methodOne(sender)
    self.methodTwo(sender)
    self.methodThree(sender)

老实说,我想说这应该是推荐的方法。它可能使源代码更易于阅读。

【讨论】:

谢谢!但是当我尝试这样做时,它会与按钮形成一个新连接,并与我之前的操作断开连接。你是如何让它一次性链接更多的? 你是在连接动作还是出口? 我正在执行操作。它让我可以为每个按钮同时制作一个动作和 n 个出口,但不是两个相同。 您使用的是哪个版本的 Xcode?我不需要做任何特别的事情来做到这一点。 我在第 6 版。我也有最新的测试版

以上是关于如何让 UIButton 一次做两件事?的主要内容,如果未能解决你的问题,请参考以下文章

让一个端口同时做两件事:http/https和ssh

javascript addEventListener做两件事

观察者设计模式方法在做两件事时是否违反SRP:设置和通知

如何让 if (message.content.startsWith('')) 检测两件事

BigQuery 帮助 - 如何转换并转换为浮点和日期格式

手机被偷前必做的两件事