找不到名为ViewController的类的任何信息。

170

自从我开始使用Xcode(4.6.3)以来,这个bug就一直困扰着我。每当我尝试将Storyboard中的项目链接到我的代码时,就会出现以下错误:

无法找到名为ViewController的类的任何信息。

这也会影响到自定义类。我试过以下方法:

  • 删除委托数据。
  • 删除并重新添加类。
  • 重启Xcode。
  • 重新安装Xcode。

无论是任何类,在我的所有项目中都无法使用ctrl-drag创建连接。即使是全新的模板应用程序也会出现相同的问题。如果我手动输入代码然后使用ctrl-drag,我可以创建一个工作连接,但我无法自动添加它。迄今为止,我在互联网上找到的任何方法都没有帮助。有什么建议吗?


你确定 ViewController .m 文件已经被正确地包含在目标中了吗?(在右侧检查器面板中的复选框) - Alfie Hanssen
2
你的storyboard中有一个视图控制器,并指定了“ViewController”作为应该实例化以管理视图的类的名称。检查storyboard中的每个视图控制器:选择视图控制器,查看右侧窗格上的“identity inspector”,并查看“Custom Class”属性。如果它读取“ViewController”,那么这就是问题所在。输入应该管理你的视图控制器的类的名称...或者输入UIViewController以获取默认的UIKit实现。 - Nicholas Hart
1
我在“Identity Inspector”中将自定义类更改为“UIViewController”,然后无法再从Storyboard拖动到ViewController.h。如果我创建一个新类并尝试将其ctrl-drag到其中(在相应地设置视图控制器的类之后),我会得到相同的“找不到任何信息”的错误提示。 - user2597451
4
我也遇到过这个问题,对自动生成的ViewController类进行修改后解决了。例如,在viewDidLoad:方法中添加一个NSLog()即可。 - j b
1
可能是重复的问题:无法插入新的出口连接:找不到所命名类的任何信息 - Andrew_STOP_RU_WAR_IN_UA
在我的情况下,我创建了一个名为“aaa”的视图控制器,删除了引用但没有删除。我本意是要删除并删除引用。所以我去文件系统中删除了该文件。然后我重新创建了一个同名的新视图控制器。我确实想知道是否会有一些我不知道的剩余问题,因为我对Swift还很陌生。最终,我进行了Build->Clean,然后重新启动了XCode(“打开myproject.xcworkspace”)。然后我就能够无误地拖动插座了。 - Lucy
41个回答

320
我解决了这个问题的方法实际上是从项目中删除该类。
步骤:
  1. 在项目文件资源管理器(左侧面板)中找到该类并右键单击 -> 删除
  2. 删除引用(不要移到垃圾箱,否则将永久失去该类)
  3. 右键单击包含该类的文件夹 -> 添加文件到...
  4. 在文件系统中找到刚刚删除的类
这似乎强制Xcode将该类重新链接到Storyboard。
注意:对我来说以下内容没有起作用:
  • 关闭Xcode
  • 清理项目
  • 从Storyboard中删除类名并重新输入
我认为这是Apple的一个错误。

9
我尝试了这个方法,但对我无效 /-: 出现了相同的错误。 - Michael
2
@Michael,是的,现在我处于一个以上都不起作用的情况。Xcode是个***。 - Chris Harrison
5
这个问题可以追溯到2013年7月,截至今天的2016年5月,我仍然遇到同样的错误,并通过这个答案解决了它。这么多年过去了,为什么苹果还没有把它彻底解决呢? - SkyWalker
3
2017年(版本8.2(8C38)),Xcode依然存在问题。当你从一个场景的Storyboard复制粘贴UI元素到另一个场景时,会出现这个问题。 - Jaime Agudo
1
2018年4月19日,Xcode 9.3仍然存在这个愚蠢的错误。难以置信,我在想苹果如何使用我的每年99美元。 - Massimo Polimeni
显示剩余7条评论

144

如果还有人感到困惑,这里有一个技巧可以让事情正常运作。

我的做法是在我的类中手动输入一个出口,例如: @IBOutlet weak var someView: UIView!,然后从代码中拖动到IB或storyboard中的视图。之后,我就能够从IB / Storyboard拖动到我的类来进行连接,助理编辑器会在“自动”模式下识别出该类等等……

每次都有效。


6
如果你在代码中创建了一个outlet,它会在该outlet左侧显示一个小圆圈。从该圆圈拖动并点击到IB或Storyboard中的视图上以建立连接。 - Andrew Robinson
4
比最佳答案更容易。 +1 - cph2117
2
仍然无法以正确的方式完成,即使经过这么长时间 - 但至少这个有效! - Alexandre G
1
太棒了,就是这样! - Sam
1
运行良好,比其他的更容易。 - neosergio
显示剩余11条评论

43

对我来说,将它们从右侧目标成员中移除并再次添加即可解决问题。 输入图像描述


这对我也起作用了。我复制了ViewController.swift类,这似乎是解决方案。 - UberJames
我认为这是Xcode的一个漏洞,它仍然存在于Xcode 8.0中。 - jiangjiefs
这刚刚在我的Xcode 8.3.3中发生了,你的解决方案是最简单且有效的。非常感谢!!! - RoberRM
仍然存在于Xcode 11.5中(我是说,苹果公司认真吗??)。我在这里列出了唯一对我有效的解决方案。 - Christophe Fondacci
适用于Xcode 14.2。 - Muhammed Gül

13

有时候Xcode会因为视图控制器没有引用类文件而出现问题。解决这个问题的简单方法是:

按照所给的方式手动编写属性。

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

这将在 @IBOutlet 之前放置一个空链接符号,在助手编辑器中打开您的项目,然后单击链接符号enter image description here并拖动到您想要连接的视图中(我已将其连接到TableView)。就是这样。享受愉快的编码!


8

我尝试了很多方法都不行,最后成功的方法是:

  • 清理构建文件夹和项目。
  • 打开Projects (窗口 -> Projects)
  • 在列表中找到你的项目并删除Derived Data
  • 关闭Xcode
  • 重启电脑(不要选择重新打开已打开的窗口)
  • 打开Xcode
  • 工作正常!

由于这是一个大型项目,所以删除所有文件并重新添加并不是一个选项。


8

我在2017年4月遇到了这个问题,与Xcode 8有关。

只需通过代码创建一个插座并编译即可解决。例如:

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

你一定会喜欢Xcode...

编辑:在Xcode 9上仍然存在此问题。


7
以下步骤适用于我,希望对您也有用:
1.关闭Xcode后,需要重新打开项目。 2.等待索引项目文件。 3.检查是否有效。 4.如果仍然无效,请按照第5步操作,如果不满意:) 5.清理并构建项目目标。
请参考下图: enter image description here

4

我必须结合目前为止的几个答案:

  1. 从Storyboard中删除自定义类名。

(在故事板中,单击视图控制器左上角的黄色按钮 -> 转到身份检查器(选项+命令+3) -> 删除顶部的自定义类名)

  1. 删除与视图控制器文件的引用。

(右键单击文件 -> 删除 -> 移除引用)

  1. 将视图控制器文件重新添加到项目中。

(右键单击文件所在的文件夹 -> "添加文件到 [项目]")

  1. 将自定义类名重新添加到Storyboard中。

4

以下方法对我有效:

  1. 进行"clean"和"clean build folder"操作(按下“option”键,然后在“Product”菜单中选择“clean build folder”)

  2. 停止 Xcode

  3. 在终端进入派生数据文件夹:

    (/Users//Library/Developer/Xcode/DerivedData)

删除你的项目的派生数据目录。

  1. 在空气中挥舞死鸡

  2. 启动 Xcode


3
我成功的做法是,不再从按钮将连接拖到代码处,而是:
  1. 点击所需的Storyboard项。
  2. 打开连接检查器(右侧面板)
  3. 从加号圆圈拖动到代码区域。 就像这样:
在以后的使用中,我以这种方式链接代码,然后它就正常工作了。

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