Xcode Interface Builder - 删除/重命名错误连接的IBOutlets / IBActions的“正确”方法?

50
我刚开始使用Xcode,正在学习Swift,不确定我所描述的问题是否是一个bug。当使用Interface Builder和Assistant Editor时,我可以创建标签、按钮等,并使用控制拖动在代码中创建Outlets和Actions。只要一切完美,就没有问题。但是,如果我错误地拼写了对象名称,或者选择了Outlet而不是Action,似乎就会遇到问题。我找不到一种方法来进行更正,而不会完全搞砸IDE。即使我在IB和代码中删除对象,构建时似乎还留下问题。或者,如果我尝试删除代码中的行并重新拖动它,将创建新的代码行,但对象似乎现在引用新名称,旧名称已不存在。再次说明,我正在使用Swift——由于我不使用/不了解Objective-C,我不知道是否存在类似的行为。感谢任何指针(除了不使用Interface Builder/storyboard/Swift)。

请澄清一下,纠正一个简单的拼写错误最好的方法是什么?(或者我只是选了个不好的名字,现在想要修复它——所以这个名字不仅出现在连接中,而且遍布整个代码。(即包括 IB 本身的查找/替换)? - dave_the_dev
要重命名IBOutlet而不删除连接,请尝试以下方法。https://dev59.com/d1oU5IYBdhLWcg3wk3p2#37313505 - RajeshKumar R
3个回答

86

使用连接检查器断开连接。然后,您就可以修改/删除对象和/或代码而不必担心。

输入图像描述


2
谢谢 - 我更新了自己的问题以澄清:在代码中出现多次的简单拼写错误(或更好的是,为了使变量名更有意义)纠正的最佳方法是什么? - dave_the_dev
1
@user1639473 -- 据我所知,目前没有包括IB本身的查找/替换功能(他们可能会在某个时候添加该功能)。因此,步骤如下:1)断开连接 2)在代码中查找/替换 3)重新创建连接。第三步可以通过从IB对象控制拖动到现有的代码行,或者你可以从代码编辑器左边缘的空圆圈(无需控制)拖动到IB对象来完成。 - user3386109
要重命名一个对象,请使用编辑 > 重构 > 重命名(或右键单击对象)。这也会重命名 Interface Builder 中的任何 IBOutlet 引用。 - Craig Pickering
2
Craig,当你使用Swift时,无法使用Refactor/Rename。当你尝试这样做时,Xcode会抛出一个错误。 - Michiel Overtoom
1
嗨,也许有点跑题:我在Objective-C中遇到了同样的问题(重命名IBOutlet)。 IBOutlet是通过从storyboard拖动按钮到.h文件来创建的。当在.h文件中重命名IBOutlet时,应用程序在模拟器中执行时会因旧的IBOutlet名称而崩溃。为了解决这个问题,我在文本编辑器中打开了.storyboard文件,查找了XML标记<connections>,并删除了过时的连接。 - pamplemousse_mk2

22

接受的答案很好,但有几种方法可以做同样的事情。

方法一

右键单击Storyboard中的视图,然后点击引用输出旁边的小x。

输入图像描述

方法二

在文档结构中右键单击视图名称。 然后点击引用输出旁边的小x。

输入图像描述

方法三

在Storyboard上选择视图,然后单击连接检查器。 然后您可以点击小x以删除输出参考。

输入图像描述

代码中的额外引用

输入图像描述

如果您在代码中得到了自己没有添加的输出连接,请参见此答案


7
在声明IBOutlet的文件中,您可以通过查看源编辑器的“边栏”中的“未填充的孔”来找到未使用的IBOutlets。请参考以下图片: enter image description here

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