无法将按钮操作拖动到Xcode 8中的现有功能

时间:2016-09-20 21:27:44

标签: swift xcode drag-and-drop storyboard interface-builder

我对Xcode 8有一个奇怪的问题。当我尝试按住Ctrl +拖动按钮到现有功能时,我无法创建新的插座或动作。更奇怪的是,即使我通过ctrl + drag创建动作,我也无法将事件与我用于创建动作的相同按钮连接起来。 IB图标也是空白的,就像动作和按钮之间没有连接,但实时点击运行动作。 另一方面,当我尝试将动作连接到从swift到storyboard的按钮时,我可以(@IB图标变为"完全")但是然后我实时点击无法识别的选择器myActionWithSender获得异常 enter image description here {{3}}

9 个答案:

答案 0 :(得分:22)

在我的Xcode版本中,IBAction是使用“Any”参数自动创建的,而不是“AnyObject”。使用UIButton显式创建IBAction对我来说很有用。

答案 1 :(得分:11)

在我的情况下,您需要将Any更改为UIButton。需要具体说明来自UIButton的行动。

@IBAction func buttonClicked(_ sender: UIButton) {

}

答案 2 :(得分:2)

单击UIButton,然后转到" Connections Inspector"来自公用事业区。

点击事件旁边的空白圆圈,然后将该线条拖动到func正文中。

答案 3 :(得分:1)

右键单击并在内部选择touchup中打开按钮功能拖动..u应该试试这个..

答案 4 :(得分:0)

在.swift文件中更改:

@IBAction func buttonClicked(sender: UIButton) { // Do something }

@IBAction func buttonClicked(z sender: UIButton) { // Do something }

只需添加一点' z' (或者你想要的任何标签)。我尝试了一个下划线' _',这也有效,但是它会发出警告,所以我只是使用了一个' z'而是绕过警告。

我相信它是Xcode 8中的一个错误。某处(可能是IB)它期望符合Swift 3的代码,其中第一个参数必须有一个标签。所以,当它看到"发送者"它假设(错误地)是标签。因此,添加标签(在我的情况下,' z')让每个人都感到高兴。

Swift 2.3不需要标签。 Swift 3可以。因此,正如Jaroslaw所指出的,从2.3升级到3.0也将解决这个问题。但是如果你的项目被卡在2.3上,那么只需添加一个标签就可以了。

答案 5 :(得分:0)

将发件人从Any更改为AnyObject对我有用

答案 6 :(得分:0)

即使在Swift 3中,您也希望将@IBAction的参数从(_ sender: Any)更改为(_ sender: UIButton)或(_ sender: AnyObject),但需要手动更改。

它可能有用。

答案 7 :(得分:0)

在我的情况下,我有一个类似的故事板打开。一旦我关闭它然后 - 单击按钮一次以查看其周围的块以进行对齐。 - 然后右键单击并将其拖动到ViewController。 - 最后,单击/点击要将事件的代码块放在ViewController中的位置。

答案 8 :(得分:-2)

要修复它,我必须将我的项目语言更新为Swift 3.0中的Swift 3.0