无法将按钮操作拖动到Xcode8中的现有函数

dgtucam1  于 2022-10-23  发布在  Swift
关注(0)|答案(9)|浏览(140)

我对Xcode8有一个奇怪的问题。当我尝试ctrl+拖拽按钮到现有功能时,我不能我只能创建新的插座或动作。更奇怪的是,即使当我通过ctrl+拖动创建动作时,我也无法将事件连接到我用来创建动作的同一个按钮。IB图标也是空白的,就像动作和按钮之间没有连接一样,但实时点击会运行动作。另一方面,当我尝试将动作与按钮从快速连接到故事板时,我可以(@IB图标变为“Full”),但在实时点击无法识别的选择器myActionWithSender


时出现异常

nwnhqdif

nwnhqdif1#

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

axkjgtzd

axkjgtzd2#

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

@IBAction func buttonClicked(_ sender: UIButton) {

}
68bkxrlz

68bkxrlz3#

点击UIButton,然后从实用程序区域转到“Connections Inspector”。
点击事件旁边的空圈,然后将线拖入Func Body。

slsn1g29

slsn1g294#

在您的.wift文件更改中:
@IBAction func buttonClicked(sender: UIButton) { // Do something }

@IBAction func buttonClicked(z sender: UIButton) { // Do something }
只需加上那个小‘z’(或者你真正想要的任何标签)。我尝试了下划线‘_’,这也很管用,但它会给出一个警告,所以我只用了一个‘z’来绕过警告。
我认为这是Xcode8中的一个错误。在某个地方(可能是IB),它期望第一个参数必须有标签的符合SWIFT 3的代码。因此,当它看到“发送者”这个词时,它会(错误地)认为这就是标签。因此,添加一个标签(在我的情况下是‘z’)会让每个人都很高兴。
SWIFT 2.3不需要标签。斯威夫特3做到了。因此,正如Jaroslaw指出的那样,从2.3升级到3.0也可以绕过这个问题。但如果你的项目停留在2.3版,只需添加一个标签似乎就能奏效。

4xy9mtcn

4xy9mtcn5#

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

hk8txs48

hk8txs486#

即使在SWIFT 3中,您也希望将@IBAction的参数从(_ sender: Any)更改为(_ sender: UIButton)或(_ sender: AnyObject),但要手动更改。
这也许能行得通。

nue99wik

nue99wik7#

在我的例子中,我打开了一个类似的故事板。一旦我关闭它,然后点击按钮一次,以查看它周围的方块是否对齐。-然后单击鼠标右键并将其拖动到视图控制器。-最后,点击/点击你想要在视图控制器中放置事件代码块的位置。

t40tm48m

t40tm48m8#

右击选择TouchUp内侧的打开按钮功能进行拖动。

huus2vyu

huus2vyu9#

要修复它,我必须将我的项目语言从SWIFT 2.3更新到SWIFT 3.0

相关问题