2017-02-20 35 views
0

在我以前认为这真的很微不足道......但现在我似乎无法做到这一点。我曾经创建过多个按钮,更改它们各自的标签,然后创建一个IBAction,它会被我的所有按钮调用!将相同的IBAction添加到多个按钮。最新的Xcode,swift 3,iOS 10

但是,这是前一阵子。现在我正在尝试做同样的事情,但似乎没有奏效。无论我做什么,我的IBAction似乎都只与一个按钮相关,并且不会被其他任何按钮触发。

我想:

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

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

我GOOGLE了,我不能只是使这个工作大声笑,也许有一些我现在失踪了。

+0

@dfd我这样做,通过故事板。不同签名的方法只是尝试不同的事情,就像其他一些帖子所建议的那样。实际上没有真正的代码,我只是想将其作为print(sender.tag)进行测试,但只有一个按钮会触发此IBAction。 –

+0

为您的按钮添加标签值 – karthikeyan

回答

0

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

当你从按钮拖动IBAction为默认签名看起来像

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

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

解决方案:

更改方法签名

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

更改任何具体的UIComponent。现在,控制从IBAction为拖动到新的按钮,一切都会好起来:)

enter image description here 正如你可以看到我和你按钮钩住相同的IBAction为:)

enter image description here 快乐编码

+0

This!我已经试过这个,但没有工作,但是,我从第一个想象中发现你发布了,我最终可以将听众拖到按钮。我认为,需要从小(+)号拖曳,这是多么的痛苦。这么小的细节大声笑。 –

+0

@ fabian-vergara:hahahaha :)很高兴你能解决你的问题:) –

0

更改@IBAction FUNC myAction(_发件人:任意){}到

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

所以,你可以链接任何按钮,一个单一的IBAction为方法。

(控制+拖动按钮“myAction”方法在助理编辑体)

相关问题