【问题标题】:"Could not find any information for class named ViewController"“找不到名为 ViewController 的类的任何信息”
【发布时间】:2013-07-18 02:17:16
【问题描述】:

自从我开始使用 Xcode (4.6.3) 以来,这个错误一直让我发疯。每当我尝试将 Storyboard 项目链接到我的代码时,都会收到错误消息:

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

自定义类也会发生这种情况。我尝试过以下方法:

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

无论课程是什么,我都无法通过 ctrl-drag 在我的任何项目中创建连接。全新的模板应用程序也会出现同样的问题。如果我手动输入代码然后按 ctrl-drag,我可以建立一个有效的连接,但我不能自动添加它。到目前为止,我在 Internet 上找不到任何帮助。有什么指点吗?

【问题讨论】:

  • 您确定 ViewController .m 文件包含在正确的目标中吗? (右侧检查面板中的复选框)
  • 您的故事板中有一个视图控制器,并为应该实例化以管理视图的类的名称指定了“ViewController”。检查情节提要中的每个视图控制器:选择视图控制器,查看右侧窗格中的“身份检查器”,并查看“自定义类”属性。如果它显示“ViewController”,那就是你的问题。输入应该管理视图控制器的类的名称...或输入 UIViewController 以获取默认的 UIKit 实现。
  • 我在身份检查器中将自定义类更改为“UIViewController”,并且不再能够从情节提要中按住 ctrl-拖动到 ViewController.h。如果我创建一个新类并尝试按住 ctrl 并拖动它(在相应地设置视图控制器的类之后),我会得到相同的“找不到任何信息”错误。
  • 我遇到了这个问题,修改自动生成的 ViewController 类对我有用。例如。只需将NSLog() 添加到viewDidLoad:

标签: ios xcode iboutlet


【解决方案1】:

为我解决这个问题的方法实际上是从项目中删除该类。

步骤:

  1. 在项目文件资源管理器(左侧面板)中找到类并右键单击 -> 删除
  2. 删除参考文献(不要移到垃圾箱,因为您将永远失去课程)
  3. 右键单击包含该类的文件夹 -> 将文件添加到...
  4. 在文件系统中找到刚刚删除的类

这似乎迫使 Xcode 将该类链接回故事板。

注意:对我来说,以下操作没有起作用:

  • 关闭 Xcode
  • 清理项目
  • 从情节提要中删除类名并重新输入

我认为这是 Apple 的一个错误

【讨论】:

  • 我试过了,但它对我不起作用/-:同样的错误。
  • @Michael,是的,现在我处于上述所有方法都不起作用的情况。 Xcode 是一个 ***
  • 这个问题可以追溯到 2013 年 7 月,截至今天 2016 年 5 月,我得到了同样的错误并用这个答案修复了它。为什么这么多年苹果都没有把它修好?
  • 不敢相信这仍然是一个问题。只需在 XCode 8.1 上执行此操作 ..
  • 2017(版本 8.2 (8C38))还活着,Xcode 很烂。当您将故事板中的 UI 人员从一个场景复制粘贴到另一个场景时,我会遇到这种情况
【解决方案2】:

如果有人仍然对此感到沮丧,有一个技巧可以让事情正常进行。

我所做的是手动在我的类中输入一个插座,例如:@IBOutlet weak var someView: UIView!,然后将从代码中拖到 IB 或情节提要中的视图中。在此之后,我可以从 IB / Storyboard 拖到我的班级进行连接,助理编辑在“自动”中识别班级等......

每次都有效。

【讨论】:

  • @Gmeister4,如果您在代码中创建一个插座,它会在插座左侧显示一个小圆圈。单击并从该圆圈拖动到 IB 或 Storyboard 中的视图以建立连接。
  • 比最佳答案更容易。 +1
  • 仍然无法以正确的方式做到这一点,即使在此之后也不行 - 但至少 this 有效!
  • 以上答案都不适合我。只有这个答案对我有用。
  • 太棒了,就是这样!
【解决方案3】:

对我来说,将它们从右栏中的目标成员中删除并再次添加就可以了

【讨论】:

  • 这对我也有效。我复制了 ViewController.swift 类,这似乎是解决方案。
  • 我认为这是 Xcode 的一个 bug,在 Xcode 8.0 中仍然存在
  • 这发生在我的 Xcode 8.3.3 中,您的解决方案是最简单且有效的。所以谢谢你!!!
  • 在 Xcode 11.5 中仍然存在(我的意思是认真的 Apple??)。此处列出的唯一对我有用的解决方案。
【解决方案4】:

有时 Xcode 会因为 VC 没有引用类文件。简单的解决方案是:

按照给定的方式手动写入属性。

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

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

【讨论】:

    【解决方案5】:

    我在 2017 年 4 月使用 Xcode 8 时遇到了这个问题

    只需通过代码创建一个插座并编译修复它。例如:

    @IBOutlet weak var containerViewHeight: NSLayoutConstraint!
    

    你必须爱 Xcode...

    编辑:Xcode 9 上仍在发生

    【讨论】:

      【解决方案6】:

      我尝试了一切,但没有成功,所以对我来说有效的是:

      • 清理 Build 文件夹和项目。
      • 打开项目(窗口 -> 项目)
      • 在列表中找到您的项目并删除派生数据
      • 关闭 Xcode
      • 重新启动计算机(不选择重新打开打开的窗口)
      • 运行 Xcode
      • 工作!

      我的所有视图控制器都没有被识别,因此删除所有文件并重新添加不是一个选项,因为这是一个大项目。

      【讨论】:

        【解决方案7】:

        以下步骤对我有用,希望对你也有用

        1- 关闭 Xcode 后需要重新打开项目。

        2- 等待索引项目文件

        3- 检查它是否有效

        4- 如果仍然无法正常工作,请按照第 5 步操作,如果对您不满意 :)

        5- 清理并构建您的项目目标

        【讨论】:

          【解决方案8】:

          对我来说,以下工作:

          1. 执行“清理”和“清理构建文件夹”(按“产品”菜单上的“选项”以获取“清理构建文件夹”命令

          2. 停止 Xcode

          3. 在终端中,转到派生数据文件夹:

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

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

          1. 在空中挥舞死鸡

          2. 启动 Xcode

          【讨论】:

            【解决方案9】:

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

            1. 从情节提要中删除自定义类名称。

            (点击storyboard中视图控制器左上角的黄色按钮->进入身份检查器(option + command + 3)->删除顶部的自定义类名)

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

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

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

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

            1. 将自定义类名添加回情节提要。

            【讨论】:

              【解决方案10】:

              如果人们尝试上述方法但仍然无法正常工作,那么对我有用的奇怪技巧是将插座添加到一大块空白中。如果您要添加的行的正上方或正下方没有其他行,则它可以工作。奇怪,但它奏效了!

              【讨论】:

                【解决方案11】:

                对我有用的是,不是将连接从按钮拖到代码中,而是:

                1. 单击所需的情节提要项目。
                2. 打开连接检查器(右面板)
                3. 从 + 圆圈拖动到代码区域。 像这样:

                在我以这种方式链接我的代码后,它从那以后就可以正常工作了。

                【讨论】:

                  【解决方案12】:

                  保持目标!

                  我正在添加一个带有 Xib 的新课程,我开始看到这个问题,我花了很长时间查看这里的答案,看看是否有任何影响。

                  碰巧,我的工作区中有多个目标,而且我经常不得不在它们之间切换。

                  事实证明,添加新文件将启动 Xcode 中的重新索引。但是如果你指向错误的目标,那么索引很可能毫无意义,并且在拖动连接 Xcode 的过程中将无法找到你的类。

                  总之

                  第 1 步。

                  确保您设置了正确的目标,这样索引才有意义。

                  【讨论】:

                    【解决方案13】:

                    这对我有用:

                    1. 执行“清理构建文件夹
                      (按住“选项”键并转到“产品”菜单进行访问。
                    2. 从“产品”菜单执行简单的“清理”(CMD-SHIFT-K)。
                    3. 构建项目以让 Xcode 编译文件。此外,如有必要,让它索引文件。

                    附带说明,我不确定这是否有帮助,但我还在执行上述步骤之前删除了派生数据(Xcode 首选项> 位置)

                    【讨论】:

                      【解决方案14】:

                      在storyBoard中选择ViewController,删除右侧面板/“客户类”/“类”中的当前值,然后重新添加控件类(类型:“SampleViewController”...),输入. --> 这对我有用

                      【讨论】:

                        【解决方案15】:

                        我尝试了所有这些答案,对我来说问题与 Xcode 无法索引文件有关。我通过简单地退出 Xcode 并重新打开项目来解决这个问题。当然,我是在尝试了上述所有解决方案之后才这样做的:p

                        【讨论】:

                          【解决方案16】:

                          Product > Clean (Command - Shift - K) 为我修复了它!

                          【讨论】:

                            【解决方案17】:

                            这是我为解决此问题所做的最简单的步骤。

                            1. 我清理了项目
                            2. 在视图控制器中拖动一个新按钮。
                            3. 构建项目。
                            4. 将新拖动的按钮连接到类(出口或动作)。
                            5. 然后瞧!!!其他插座现在可以再次连接到班级!

                            【讨论】:

                              【解决方案18】:

                              根据我的测试经验,如果你删除了一个在 Xcode 中关联的类,然后重新添加文件,就会出现这个问题。

                              【讨论】:

                                【解决方案19】:

                                通常当这种情况发生在我身上时,我只是还没有保存课程的代码。只需跳到代码并点击 cmd+s,它通常会以正确的方式解决问题。

                                【讨论】:

                                  【解决方案20】:

                                  只需要清理并重新构建项目。

                                  【讨论】:

                                    【解决方案21】:

                                    上述步骤均不适用于我,但我想我可能已经发现了问题所在。至少它对我有用,而且它不是 Xcode 中的错误。

                                    在助手编辑器中查看包含 viewController 代码的窗口顶部。右边的第三个选项可能是“手动”,但应该是“自动”。一旦我改变了这个,问题就解决了!

                                    【讨论】:

                                      【解决方案22】:

                                      我只是重新启动 Xcode,然后它就可以工作了。

                                      【讨论】:

                                        【解决方案23】:

                                        好吧,伙计们几乎看到了所有热门答案,但没有一个对我有用。

                                        所以对我有用的是以下内容:

                                        1. 从您的 Xcode 项目中复制 Derived Data 地址。 这可以使用以下方法完成:

                                        Xcode -> Preferences -> Location Tab -> Derived Data

                                        1. Close Xcode

                                        2. 现在转到派生数据位置并删除那里的项目文件夹。

                                        现在打开 Xcode,瞧!

                                        【讨论】:

                                          【解决方案24】:

                                          我遇到了类似的问题,“找不到名为...的类”,一旦我弄清楚了原因,我就觉得很愚蠢。确保您没有从项目拖动到界面 - 确保它被拖动到类本身

                                          【讨论】:

                                            【解决方案25】:

                                            我什么都试过了!

                                            确保你的 UIViewController 的类名不包含“Test”这个词

                                            已提交错误报告。

                                            【讨论】:

                                            • 绝对不是说这是唯一的原因。只是这是另一件需要注意的事情。
                                            • 帮我删除所有派生数据,清理项目。但这是错误,你是对的。
                                            【解决方案26】:

                                            我会尝试重新制作有问题的 .m 和 .h 文件,并给它们一个原始名称,而不是像“ViewController”这样的通用名称。尝试更多按照您希望该文件执行的操作,并以 View Controller 结尾(即“PizzaDecoraterViewController”)

                                            然后选择要连接到这些文件的 ViewController。确保选择 ViewController,而不仅仅是其中的一个对象。单击底部的黑条(带有“First Responder”和“Exit”图标的黑条)。整个 ViewController 的轮廓应为蓝色。然后转到 Identity Inspector 中的 Custom Class 部分,您应该会在第一个字段中看到灰色的“UIViewController”。在该字段中,输入您希望它连接到的 .h 或 .m 文件的名称(开始输入 PizzaDecorator... 它应该会做一些自动完成的事情)。然后按 ENTER。

                                            当您打开助手编辑器时,请确保您尝试拖放到的文件实际上是正确的文件。

                                            如果你已经完成了上面所说的一切,那么它应该可以工作。

                                            【讨论】:

                                            • 不幸的是,仍然无法正常工作。我以前尝试过这样做,但无济于事。这是截图:i.imgur.com/5ixtcps.png
                                            • 嗯。奇怪的。尝试以编程方式添加它们(即@property (nonatomic, strong) IBOutlet UIView *test;),然后当小圆圈出现在它旁边时,拖放到您的 UIView。
                                            • 这有效并且一直有效(并且应用程序似乎运行正常),但我正在尝试解决它不会自动添加的问题。
                                            • 好吧,如果它是这样工作的,那么它应该以另一种方式工作。 XCode 中的错误?尝试获取以前的版本(如 4.6.2 或其他版本)并安装它。否则,嗯嗯嗯嗯嗯嗯嗯……是啊……
                                            • 是的,这就是我害怕的。卸载和重新安装一直没有工作,我希望我犯了一个错误。降级 Xcode 副本的最佳方法是什么?
                                            【解决方案27】:

                                            正如我在@ChrisHarrison 的回答中评论的那样,这些东西对我不起作用,但删除派生数据就像我通过删除 https://stackoverflow.com/a/16182672/1449799 中的派生数据来让它工作一样

                                            【讨论】:

                                            • 删除派生数据或清理重建项目或关闭 xcode 对我不起作用。我刚刚创建了新的 viewcontroller 类,然后复制粘贴了旧的,但不包括类名。所以它开始工作了。
                                            【解决方案28】:

                                            删除文件(仅引用)并重新添加文件。

                                            【讨论】:

                                              【解决方案29】:

                                              在我的情况下,有效的事情(有点奇怪,但有效)如下:

                                              尝试添加数据源(例如,对 ViewController 的扩展,如 UITableViewDataSource)。 Xcode 将尝试重新加载 ViewController。然后我写了协议的一些方法(一开始Xcode没有自动补全方法,而是手动写出来的),然后我添加了IBOutlets,最后我删除了数据源。

                                              例子:

                                              class TestViewController:UIViewController{
                                                  // This viewController presents “Could not find any information for  class named ViewController”
                                              }
                                              
                                              extension TestViewController:UITableViewDataSource{
                                                  //Add Some methods of the protocol, Xcode will try to autocomplete and then it's going to reload the class, from then you can add your IBOulets / Actions .. And remove this extension if you don't need it otherwise.
                                              }
                                              

                                              【讨论】:

                                                【解决方案30】:

                                                对我来说,我为其指定自定义类的视图未能由界面生成器编译。它被标记为@IBDesignable

                                                删除@IBDesignable,然后添加我的网点,然后将其标记为@IBDesignable,解决了我的问题。

                                                【讨论】:

                                                  猜你喜欢
                                                  • 1970-01-01
                                                  • 2015-07-07
                                                  • 2023-04-10
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  相关资源
                                                  最近更新 更多