Xcode 4:创建一个UIView xib,未正确连接

84

我正在尝试创建一个包含视图的nib文件,该视图将嵌入TableViewCell中。我已经创建了接口和实现文件 ResultCell.hResultCell.m。它们是原始的、未修改过的代码。

然后我创建了一个空的XIB文件,并将一个UIView拖到其中。然后我点击File's Owner,并将其类型设置为ResultCell。我点击视图,并将其类也设置为ResultCell

这里出现了以下问题:

  1. 当使用助手编辑器视图(我经常使用)查看ResultCell.xib文件时,ResultCell.h文件不会显示。我必须通过单击Automatic并选择文件来强制加载。
  2. 当我在视图中放置标签,然后按Ctrl+单击并拖动到.h文件中创建输出口时,我会收到此错误消息:无法插入新的输出连接:找不到名为ResultCell的任何类的信息。

我尝试过多次创建和重新创建视图,但仍无法解决问题,我开始失去耐心。非常感谢您提供任何帮助!


我刚刚遇到了这个问题。昨晚还好好的,今天就不行了。如果我找到了什么解决方法,我会告诉你的。 - Tavison
值得一提的是,过去一年中这里的多个答案都帮助了我。最近版本的Xcode已经改善了很多事情。 - Tim Sullivan
33个回答

113
我今天也遇到了类似的问题,很奇怪:我可以将任何XIB(新的或现有的)附加到项目中已有的ViewController类,但我无法创建一个新的ViewController并使其正确地附加到任何XIB。 "辅助"功能不起作用,连接IB到头文件的功能也不起作用。
关闭项目并重新打开无法解决问题。
退出XCode并重新启动也不能解决问题。
创建一个新项目并测试功能正常,这让我相信某个缓存中存在损坏的内容。 我的解决方案
  • 关闭你的项目。
  • 进入~/Library/Developer/XCode/DerivedData文件夹,并删除所有子文件夹,这些子文件夹引用了你正在使用的项目。
  • 在XCode中打开你的项目。现在问题应该已经解决了。
顺便说一下,仅仅运行完整清理似乎没有清除问题。我必须删除派生数据。我确定我陷入了这种情况是因为我正在玩git游戏,但我不知道如何摆脱它,因为即使切换回早期的git版本也没有帮助。(这也是一个很大的线索,表明它是项目本身没有跟踪的东西。)

6
我刚才登录了我的Mac上的SO,只是为了给这个答案点赞!对我非常有用。这让我很烦恼,因为我正在学习如何使用XCode,而且已经很难了,不需要这些荒谬的问题。:) 谢谢!!! - Dave
2
它甚至可以在不重启Xcode的情况下工作;只需删除派生数据并重新构建(在iOS项目上)。 - nob
@hol:就像我说的那样,最大的线索是我无法通过更改项目内跟踪的某些内容来影响任何状态变化。一旦我确定了这一点,我就去别处寻找答案... - David Pisoni
1
哈哈,很高兴知道IOS和Xcode使用起来可能会比使用Eclipse和Android更加有bug :p - James andresakis
我也遇到了5.0.2的同样问题。尝试了所有方法。 - expert
显示剩余7条评论

81

这可能不适用于您特定的问题,但有时在使用新创建的nib文件时会出现该错误。删除并重新创建与以前相同名称的nib文件和视图控制器并未解决该问题,但重新启动Xcode可以解决。


1
David Pisoni的回答对我有用。简单地重新启动Xcode并不能解决问题。 - Andy
我现在已经有很多个Xcode版本没有遇到这个问题了,所以现在可能有比我去年写这篇答案时遇到的原因更普遍的原因。 - Defragged
@Defragged 你能否在引用代码前包括按 Command K 清除缓存的步骤,甚至更好的方法是退出 Xcode 然后清除缓存 (~/Library/Developer/Xcode/DerivedData)。 - user1046037
我正在使用Xamarin Studio。 我不得不退出xcode和Xamarin Studio,然后重新打开Xamarin Studio并从这里打开一个xib文件,它在xcode中启动。 助理编辑器随后正确打开了。 - Dave Haigh
我曾经遇到过同样的问题(Xcode 7.x,Swift 2.x),但我的解决方案不同。我尝试了评论中列出的所有方法(删除派生数据、重启Xcode、清理构建等)以及在此处列出的方法https://dev59.com/wGUp5IYBdhLWcg3wbXFf。有效的方法是:我的视图控制器文件在导航面板中的目标之外。我将其拖放到应用程序委托旁边,勾选“如果需要复制”,然后删除旧文件。希望能对某些人有所帮助。 - AmitaiB
显示剩余3条评论

14

我刚遇到了这个问题,重启Xcode并没有解决它。我将类文件从项目中删除,然后再添加回去,这样它就可以工作了。


13

我曾经也遇到过同样的问题。我尝试了以下方法:

  • 重新启动Xcode
  • 删除Derived Data
  • 还有其他很多方法

但这些都没有起作用。对我有效的方法就是:

  • 从项目中删除“可疑”的类文件(只需要移除引用即可)
  • 再将它们添加回项目中

然后,问题解决了!


2
这对我有用,谢谢!这是我尝试的第一件事,除了重新启动XCode之外,因为它似乎是最少的工作量和风险,而且效果很好。 - adriandz
1
在重启Xcode并删除派生数据后,这对我起作用了。 - elad s
1
这个对我也起作用了。这可能与重构类名有关(这就是我刚刚做的)。 - ecotax

9

如果重新启动Xcode不能解决问题,我发现将新的.m文件从目标成员中切换出来再切换回去可以解决问题。


3
这对我很有帮助:
  1. 从项目文件面板(左侧)选择破损的xib文件。
  2. 从编辑器视图中单击“文件所有者”图标。
  3. 从属性面板(右侧)选择第三个选项卡(在顶部)
  4. 指定“自定义类”

如果您没有看到“面板”,请查看窗口右上角并启用正确的“视图”按钮。 如果您没有看到“视图”按钮,则单击最右侧的胶囊按钮。


我最近更改(重构)了类名。 正如在此答案中提到的自定义类仍设置为旧名称。 将其更改为新名称即可解决问题。 - PaulMrG

2
在XCode中,进入组织器,点击项目,点击删除派生数据...然后清理项目。

2
在我的情况下,对相应的头文件进行“虚假更改”(只是加入一个空格)有助于解决问题。

我认为这对我也可能有用。在我的情况下,我手动添加了一个插座。然后我能够将我的线连接到它,并通过ctrl拖动创建新的插座。 - Daniel Wood

2

今天我遇到了同样的问题。 重启XCode并不能解决我的问题。 我通过使用位于组织者下方的项目的“衍生数据”选项中的“删除”来使一切恢复正常。 组织者说,“衍生数据包括索引、构建输出和日志”。 我想这些因素之一导致了这个问题。


2
我注意到.m文件被移动到en.lproj文件夹中。只需从Xcode中删除(仅引用).m文件并将.m文件移出en.lproj文件夹,然后重新添加它即可解决此问题。不要担心,您将恢复所有连接。

我的 .m 文件是自动生成的,我还没有改过它。后来我修改了它,一切都正常了。其他方法都没有起作用。 - entonio

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