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

时间:2016-06-15 21:16:41

标签: ios swift uibutton swift3 xcode8

我正在使用Xcode 8 beta。我无法从故事板中拖动多个UIButton来连接到swift文件中的单个@IBAction。错误?谢谢你的帮助。

9 个答案:

答案 0 :(得分:18)

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

我认为Xcode8中存在一个错误。您可以通过将sender更改为_ sender

将多个/单个按钮添加到单个操作/功能

例如: - 普通按钮

   @IBAction func huu(sender: UIButton) {

   }

您无法在此操作中添加多个按钮或单个按钮,只需更改此类操作,然后您可以使用拖动和连接故事板添加多个按钮。

 @IBAction func huu(_ sender: UIButton) {

 }

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

enter image description here

要删除此警告,请从操作/功能中删除_符号。确保在连接IBOutlets后删除_

希望这会对你有所帮助! :)

答案 1 :(得分:13)

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

答案 2 :(得分:4)

如果你改变了#34;任何"到" UIButton"它会工作。

答案 3 :(得分:1)

如果我是正确的,您需要使用UIGestureRecognizer将多个内容附加到一个操作中。

你可以做的是在每个按钮上放置一个UIGestureRecognizer,然后像往常一样用按钮(按住Ctrl键拖动)设置其中一个,而不是从其他手势识别器按住Ctrl键拖动到第一个按钮你做的行动。

答案 4 :(得分:1)

以下IBAction仅适用于一个按钮。

@IBAction func singleButton(sender: Any) {
   // Write your logic
}

以下IBAction可以使用多个按钮。

@IBAction func multipleButton(sender: UIButton) {
   // To find a particular button from an array of buttons
   if sender.tag == 1{
     // Write your logic
   }else if sender.tag == 2{
    // Write your logic
   }

}

答案 5 :(得分:0)

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

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

我想这是一个错误,Apple在“重命名Objc-methods”的事情上有点过分。

答案 6 :(得分:0)

我已将发件人更改为任何

中的UIButton

控制将按钮拖动到功能名称。

答案 7 :(得分:0)

在Swift 3完整版中,这将有效。

只需将Any更改为UIButton,即可将更多按钮操作连接到此特定方法。

所以改变之后它应该是这样的:

@IBAction func s(_ sender:UIButton){     } 当然这将解决问题。 :)

答案 8 :(得分:0)

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

正常的UIAction

@IBAction func selectBtn(_ sender: Any) {

   }

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

@IBAction func selectBtn(_ sender: UIButton) {

   }

这对我有用。我将返回类型从“Any”更改为“UIButton”