Xcode8无法在swift文件中将多个/单个的uibuttons连接到单个@IBAction

我正在使用Xcode 8testing版。 我不能从故事板拖动多个UIButton来连接到swift文件中的一个@IBAction。 错误? 谢谢你的帮助。

通过使用此解决方法,您可以添加现有的操作,也可以将多个button连接到单个操作。

我认为在Xcode8中有一个错误。 通过将sender更改为_ sender可以将多个/单个button添加到单个操作/function中

例如: – 正常button

  @IBAction func huu(sender: UIButton) { } 

您不能将多个button或单个button添加到此操作中,您只需要像这样更改,然后通过使用拖放和连接故事板来添加多个button。

  @IBAction func huu(_ sender: UIButton) { } 

连接IBOutlets后,Xcode将显示如下警告:

在这里输入图像说明

要删除此警告,请简单地从操作/function删除_符号。 确保在连接IBOutlet后删除_

希望这会帮助你! 🙂

如果将发件人更改为AnyObject而不是Any或UIButton ,则可以将多个button连接到相同的操作。

当你连接一个button动作时,默认情况下这个方法看起来像这样:

 @IBAction func s(_ sender: Any) { } 

只要将任何更改为UIButton ,您可以连接更多button操作到这个特定的方法。

所以改变后应该看起来像这样:

 @IBAction func s(_ sender: UIButton) { } 

希望这将解决这个问题。 🙂

如果你改变“任何”到“UIButton”它将工作。

如果我是正确的,则需要使用UIGestureRecognizer将多个事件附加到一个操作。

你可以做的是在每个button上放置一个UIGestureRecognizer ,然后像button(ctrl-drag)那样将其中的一个button设置为一个button(ctrl-drag),然后按住Ctrl从其他手势识别器拖动到您所做的第一个动作。

我想这是另一个问题:如果你尝试创build一个IBAction第一次,它工作正常。 但是,如果由于任何原因您决定重新连接IBAction(同一个动作到另一个对象,或重命名该function),那么它会失败。

事实上,你创build了一个名为doSomething的IBAction,它创build了一个函数func doSomething(sender: UIButton) 。 但是用XCode 8(或Swift 2.3 / 3.0),这个方法被解释为func doSomethingWithSender(sender: UIButton)

我想这是一个错误,苹果在“重命名Objc-methods”方面做了太多的努力。

我已经从任何发件人更改为UIButton

控制拖动button到function的名称。

在斯威夫特3完整版本,这将工作。

只要将任何更改为UIButton,您可以连接更多button操作到这个特定的方法。

所以改变后应该看起来像这样:

@IBAction函数(_发件人:UIButton){}当然,这将解决这个问题。 🙂

我多次尝试,最后得到的结果是,

正常UIAction

 @IBAction func selectBtn(_ sender: Any) { } 

对于具有相同UIAction方法的多个button,请尝试以下方法,

 @IBAction func selectBtn(_ sender: UIButton) { } 

这对我有效。 我将返回types从“Any”更改为“UIButton”