14

我正在使用 Xcode 8 测试版。我无法从情节提要中拖动多个 UIButton 以连接到 swift 文件中的单个 @IBAction。漏洞?谢谢你的帮助。

4

10 回答 10

18

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

我认为 Xcode8 中存在错误。sender您可以通过更改为将多个/单个按钮添加到单个操作/功能_ sender

例如:- 普通按钮

   @IBAction func huu(sender: UIButton) {

   }

您不能向此操作添加多个按钮或单个按钮,您需要像这样简单地更改,然后您可以通过使用从情节提要的拖动和连接来添加多个按钮。

 @IBAction func huu(_ sender: UIButton) {

 }

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

在此处输入图像描述

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

希望这会帮助你!:)

于 2016-09-21T11:39:39.673 回答
13

如果您将发送者更改为AnyObject而不是 Any 或UIButton,它将允许您将多个按钮连接到同一操作。

于 2016-11-13T18:52:48.610 回答
10

当您连接按钮操作时,默认情况下该方法将如下所示:

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

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

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

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

希望这能解决问题。:)

于 2016-12-05T05:58:04.677 回答
4

If you change "Any" to "UIButton" it will work.

于 2017-01-08T23:08:45.020 回答
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
   }

}
于 2018-01-16T12:05:33.797 回答
1

如果我是正确的,您需要使用UIGestureRecognizer将多个事物附加到一个动作。

您可以做的是UIGestureRecognizer在每个按钮上放置一个,然后像通常使用按钮(ctrl-drag)一样设置其中一个,而不是从其他手势识别器 ctrl-drag 到您所做的第一个操作。

于 2016-06-15T21:21:59.290 回答
0

在 Swift 3 完整版中,这将起作用。

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

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

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

于 2017-01-02T07:45:49.197 回答
0

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

普通 UIAction

@IBAction func selectBtn(_ sender: Any) {

   }

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

@IBAction func selectBtn(_ sender: UIButton) {

   }

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

于 2017-04-04T05:42:41.483 回答
0

我想这是另一个问题:如果您第一次尝试创建 IBAction,它可以正常工作。但是,如果出于某种原因您决定重新连接 IBAction(将相同的操作连接到另一个对象,或者重命名函数),那么它就会失败。

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

我想这是一个错误,Apple 在“重命名 Objc 方法”这件事上有点过分了。

于 2016-09-19T10:05:42.733 回答
0

我已将发件人从 Any 更改为 UIButton

控制拖动按钮到函数的名称。

于 2016-12-17T19:28:58.240 回答