@IBOutlet和@IBAction引用了错误的项目,如何摆脱这些引用?

14

我将一些源代码从一个 的Xcode项目复制并粘贴到另一个 项目中。

在复制的代码中包括一些 @IBOutlets 和 @IBActions。我的意图是稍后将它们连接到新项目中的故事板上。然而,Xcode不知何故复制了引用到旧项目的故事板我该如何摆脱这些引用?

输入图像描述

更新:在我的故事板中添加了一个与buyButton的连接后,xcode指示buyButton连接到两个不同的故事板。

输入图像描述


1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Sulthan
@Sulthan 清理和构建后,引用仍然存在。我尝试在一个新的最小项目中重现这个问题,但是我无法重现错误。所以也许我在我的项目中做了其他事情。 - ragnarius
取变量名,比如“buyButton”,并在 Xcode 中搜索该名称。如果有一个 outlet 连接,你应该能够找到它(Xcode 也会搜索 xibs 和 storyboards)。 - Sulthan
我只能在Swift文件中找到“buyButton”。我原以为它会在某个XML文件中,但事实并非如此。 - ragnarius
2018年10月,使用Xcode 10仍然存在同样的问题... - denis_lor
7个回答

9
我的结论是,xcode(7.3.1)存在一个错误(或缺陷)。

如果我终止xcode,然后打开我的新项目,那么一切看起来都很好。

如果我然后打开旧项目,并且在该项目中还打开旧的storyboard,则新项目中的虚假符号链接变得可见。 enter image description here

我猜测,xcode会扫描所有已打开的storyboard,以查找诸如“buyButton”之类的输出名称与storyboard之间的链接。


1
...并且在Xcode 11.1(2019年11月)中继续进行。不得不观察现有项目副本中的相同行为。 - Dirk

6

我重新启动了Xcode后问题解决了,现在它正常工作。


4

最终提供了另一种解决方案。我们也可以按照以下步骤从Storybord中删除连接:

enter image description here

找到您的连接并将其删除:

enter image description here


1
+1 谢谢,知道可以将故事板以xml格式打开很好!但我不认为我的新故事板存储了连接。它存储在旧的故事板中!我可能已经找到了另一个与重新启动xcode相关的解决方案。 - ragnarius
这在Xcode 8.3.3中仍然是一个问题,而且这个解决方案并不能解决它。当检查源代码时,只有正确的连接存在。 - jungledev

3
我遇到了同样的问题。要解决这个问题,您需要执行以下步骤(适用于 macOS Catalina 10.15.4 和 Xcode 版本 11.1):
  1. 关闭项目和 Xcode
  2. 打开 /Users/XXXXX/Library/Developer/Xcode/DerivedData 并删除项目的缓存
  3. 打开 /Users/ХХХХХ /Library/Developer/Xcode/DerivedData/ModuleCache.noindex 并删除该目录中的所有缓存
  4. 重新打开您的项目并点击 Product > Build

2

只需更改一个字母,就能从“name it cause”断开关系并将其链接到新的storyboard中,请尝试一下。


1
是的,链接断掉了。但是当我改回名称时它又出现了。这意味着我的新Xcode项目链接到了我的旧项目,而我不想要这样。 - ragnarius
为什么不先删除所有的链接和复制内容,然后再重新粘贴在一起看看会发生什么。 - tryKuldeepTanwar

1
尝试一下:-
点击插座点

enter image description here

点击Main.Storyboard,它将引导你

enter image description here

点击查看控制器,您将看到您的插座已连接

enter image description here

点击“关闭”按钮即可断开连接,然后您就可以开始了。

1
不,它不起作用,当我点击Main.storyboard时,它会打开旧项目的storyboard! - ragnarius
所以问题是什么?从旧项目中删除链接,保存并重新连接,也许那会起作用。 - tryKuldeepTanwar
问题在于我不想改变旧项目的故事板(我假设连接存储在旧的故事板文件中,但这个假设可能是不正确的)。 - ragnarius
请使用下划线而非空格,亲。 - tryKuldeepTanwar
如果您的Xcode项目引用了另一个项目中的文件,您可以使用“实用工具”面板中的“文件检查器”将其重定向到正确的位置。步骤如下:在“项目导航器”中选择有问题的文件,在“实用工具”面板中选择“文件检查器”,查看Xcode 认为它所在的完整路径,单击文件检查器的文件夹图标以打开“选择文件”对话框,在正确的位置导航到正确的文件,然后单击“选择”按钮。 - SteveCaine

1
这仍然是Xcode 8.3.3存在的问题,截至2017年6月25日。唯一一个我成功解决的方法是更改实体名称。
对我无效的方法包括:
- 清理项目构建文件夹 - 重启Xcode - 升级Xcode到最新版本(对我来说8.1和8.2也存在此问题) - 关闭其他已打开的项目 - 删除并重新添加连接 - 检查源代码并从xml中删除重复的连接 - 点击任何地方查看引用,删除它们并重新添加。

@ragnarius,如果这个解决方案对您有用,请点击赞成分数下面的复选框以接受我的答案作为正确的解决方案。 - jungledev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接