无法将动作连接到 Xcode 6.1.1 中的现有函数
Posted
技术标签:
【中文标题】无法将动作连接到 Xcode 6.1.1 中的现有函数【英文标题】:Cannot connect action to existing function in Xcode 6.1.1 【发布时间】:2014-12-11 02:15:32 【问题描述】:我读到可以通过 ctrl-click-dragging 到现有方法将 UIControl 的操作连接到 ViewController 中的现有函数。
我期望它做的是突出显示现有功能,然后设置与它的连接。但是,我已经尝试了很多次,但它似乎不起作用。它总是想插入一个新的(见截图)
我正在使用 Swift(如您所见)和 Xcode 6.1.1。
有没有其他人经历过这种情况?这可能是这个版本的 Xcode 的错误吗?
更新:为了表明即使拖动名称也无济于事:-(
【问题讨论】:
对我来说很好。想法:尝试从第 21 行左侧的圆圈拖动到按钮。 另一个想法:你最后一次退出 Xcode 是什么时候?它有时确实需要一记耳光。退出并重新启动可以解决很多问题。 storyboard中viewController的类与文件的类是否匹配? 上面的截图取自一个新项目,包含 Main.storyboard 和 ViewController.swift。所以它应该是正确的类。 另外,如果重新启动没有帮助,请尝试使用另一个(全新的)项目,因为您的项目有可能以某种方式损坏。我在这里抓住了最后一根稻草,因为很难理解为什么它会提供插入出口或动作但不与现有功能的连接。就好像它没有看到现有的函数——这就是为什么我说你至少需要编译。 【参考方案1】:降级到 Xcode 6.1 后,问题得到解决。
我现在可以将控件连接到 ViewController 上的现有 IBActions
很奇怪。
【讨论】:
【参考方案2】:它应该工作。我将建议您项目的索引被楔入,cleaning the cache 强制重新索引将解决问题。
这是我执行所需手势的照片(我试图尽可能靠近您的屏幕截图):
【讨论】:
如上图,关键是要实际拖到函数名上。也适用于网点,只要您拖到网点名称上即可。事实上,我不得不这样做,因为 xcode 拒绝创建一个新的出口。 谢谢,我试着直接拖到函数名上,还是不行。我什至将函数签名更改为没有“发件人”参数但没有运气:-/【参考方案3】:我也和你一样面临这个问题。 很奇怪,每次更新xcode后它都会起作用。在我重新打开 xcode 或重新启动计算机后它不会工作。这让我相信这不是错误或任何应用程序问题。
经过大量实验,我发现了一种解决此问题的奇怪方法。 转到系统首选项和设置。并转到语言和地区。然后更改您的语言和地区。它会要求您重新启动然后重新启动您的mac。至少在那段时间内它应该可以工作。(我很有信心只重新启动您的计算机无济于事......)
【讨论】:
【参考方案4】:我发现了同样的问题。这个问题是路径引起的。
查看storyboard和swift文件的路径。位置相同(相对于组),但路径不同,一个是“”,另一个是“../../../”
如果路径不同,则无法进行连接操作
it does not work
-
确保路径相同。打开并编辑 xcodeproj 文件。
PATH_TO_YOUR_PROJECT/PROJECT_NAME.xcodeproj
将“../../../../../hill/project/ios project/Checklists/Checklists/xxx.swift”替换为“xxx.swift”
再试一次
it works
【讨论】:
【参考方案5】:在 Swift 3 中,我们希望将 @IBAction
的参数类型从 (_ sender: Any)
更改为 (_ sender: UIButton)
或 (_ sender: AnyObject)
。
但是应该手动完成。
它可能工作得很好。
【讨论】:
【参考方案6】:在 xCode 7.0.1 中遇到了同样的问题。我尝试重新启动 xcode,确认文件路径在同一组中,清除缓存。最后,重新启动我的电脑解决了这个问题。很简单,但在尝试了 2 小时不同的事情后令人沮丧......
【讨论】:
以上是关于无法将动作连接到 Xcode 6.1.1 中的现有函数的主要内容,如果未能解决你的问题,请参考以下文章