将相同的IBAction添加到多个按钮。最新的Xcode,swift 3,iOS 10

时间:2017-02-20 05:30:49

标签: ios swift xcode uibutton ibaction

在我以前认为这真的很微不足道之前......但现在我似乎无法做到这一点。我曾经创建了多个按钮,更改了各自的标签,然后创建了一个IBAction,并为所有按钮调用它!

然而,这是不久前的事了。现在我正在努力做同样的事情似乎并没有起作用。无论我做什么,我的IBAction似乎只与一个按钮相关联,并且它不会被任何其他按钮触发。

我试过了:

@IBAction func myAction(sender: UIButton) { }
@IBAction func myAction(_ sender: UIButton) { }
@IBAction func myAction(_ sender: Any) { }

这些都不起作用。这是一个错误吗?有没有新的方法来做到这一点?我是否被迫为每个按钮创建单独的动作,尽管每个按钮的功能都非常熟悉?

我用谷歌搜索,我似乎无法做出这样的工作大声笑现在可能还有一些东西现在不见了。

2 个答案:

答案 0 :(得分:0)

这是Xcode中的一个错误。希望苹果尽快修复它的错误。

从按钮拖动时,IBAction的默认签名类似于

@IBAction func meHere(_ sender: Any) {
    //something here
 }

现在,如果您添加另一个按钮并尝试将相同的IBAction设置为它不允许的按钮(只有苹果知道为什么)

解决方案:

将方法签名更改为

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

将Any更改为特定的UIComponent。现在控制从IBAction到新按钮的拖动一切都会好的:)

enter image description here 你可以看到我和你的按钮都挂在同一个IBAction上:)

enter image description here 快乐的编码

答案 1 :(得分:0)

将@IBAction func myAction(_ sender:Any){}更改为

@IBAction func myAction(_ sender: AnyObject) { }

因此,您可以将任何按钮链接到一个IBAction方法。

(在助理编辑器中控制+拖动按钮到“myAction”方法的正文)