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

时间:2013-07-18 22:37:21

标签: ios xcode iboutlet

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

  

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

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

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

无论类是什么,我都无法按住Ctrl键拖动以在任何项目中创建连接。全新的模板应用程序也会出现同样的问题。如果我手动输入代码然后按住Ctrl键拖动,我可以建立一个有效的连接,但是我无法自动添加它。到目前为止,我在互联网上找不到的任何东西都有帮助。有什么指针吗?

38 个答案:

答案 0 :(得分:264)

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

步骤:

  1. 在项目文件资源管理器(左侧面板)中找到该类并右键单击 - >删除
  2. 删除参考(不要移动到垃圾箱,因为您将失去课程)
  3. 右键单击包含该类的文件夹 - >将文件添加到...
  4. 在文件系统中找到刚刚删除的课程
  5. 这似乎迫使Xcode将课程链接回故事板。

    注意:对我来说,以下是工作:

    • 关闭Xcode
    • 清洁项目
    • 从故事板中删除班级名称并重新输入

    我认为这是Apple的一个错误

答案 1 :(得分:122)

如果有人仍对此感到沮丧,那就有办法让事情发挥作用。

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

每次都有效。

答案 2 :(得分:30)

让我从正确列中的目标成员身份中删除它们并再次添加它们就可以了 enter image description here

答案 3 :(得分:9)

有时由于VC没有引用类文件,Xcode会这样做。对此的简单解决方案是:

手动写属性给定。

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

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

答案 4 :(得分:6)

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

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

2-等待索引项目文件

3-检查它是否有效

4-如果仍然没有工作,请按照步骤5,如果不满意你:)

5-清理并构建项目目标

enter image description here

答案 5 :(得分:6)

我刚刚在2017年4月使用Xcode 8

解决了这个问题

只需通过代码创建插座并进行编译即可修复它。例如:

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

你必须喜欢Xcode ......

编辑:仍然在Xcode 9上发生

答案 6 :(得分:5)

我尝试过所有的东西而且它没有用,所以对我来说有用的是:

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

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

答案 7 :(得分:4)

对我来说,以下工作:

  1. 做一个'清洁'和一个干净的构建文件夹' (按产品菜单上的'选项以获取' clean build文件夹'命令

  2. 停止Xcode

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

    (数/用户//库/开发商/ Xcode中/ DerivedData)

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

    1. 在空中挥动死鸡

    2. 启动Xcode

答案 8 :(得分:3)

如果人们尝试上述内容并且仍然无法正常工作,那对我有用的奇怪伎俩就是在一大块空白处添加插座。如果您正在添加的行的正上方或下方没有其他行,则它可以正常工作。奇怪,但它有效!

答案 9 :(得分:3)

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

  1. 点击所需的故事板项目。
  2. 打开连接检查器(右侧面板)
  3. 从+圈拖动到代码区域。 像这样:
  4. 在我以这种方式链接我的代码之后,它从此开始正常工作。

答案 10 :(得分:2)

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

答案 11 :(得分:2)

保持目标状态!

我正在添加带有Xib的新课程,我开始看到这个问题,并且花了很多时间在这里仔细查看答案,看看是否有任何改变。

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

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

简而言之

第1步。

Target Seledction

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

答案 12 :(得分:2)

这是我为解决这个问题所采取的最简单步骤。

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

答案 13 :(得分:2)

这对我有用:

  1. 执行'清理构建文件夹'
    (按住“选项”键,然后进入“ 产品”菜单进行访问。
  2. 从“ 产品”菜单中执行简单的“清洁”(CMD-SHIFT-K)。
  3. 构建项目,以使Xcode编译文件。另外,如有必要,让它为文件建立索引。

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

答案 14 :(得分:2)

产品>清洁(Command - Shift - K)为我修好了!

答案 15 :(得分:1)

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

答案 16 :(得分:1)

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

答案 17 :(得分:1)

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

答案 18 :(得分:1)

我尝试了一切!

确保UIViewController的类名不包含单词“ Test”

错误报告已提交。

答案 19 :(得分:1)

根据我的测试经验,如果删除与Xcode关联的类,而不是再次添加文件,则会出现此问题。

答案 20 :(得分:1)

通常当我遇到这种情况时,我还没有为该课程保存代码。只需跳到代码并点击cmd + s,它就能正确解决问题。

答案 21 :(得分:0)

转到项目文件夹并删除派生数据文件夹

如果您无法找到派生数据,请转到查找程序并转到

 ~/Library/Developer/XCode/DerivedData/"project"

(将“项目”名称替换为项目名称)

答案 22 :(得分:0)

对我来说,问题在于项目中存在语法错误。 解决错误后,一切正常。 我正在使用xCode 11

答案 23 :(得分:0)

我所做的是将一个按钮作为一个无参数的动作进行连接,将发送方作为UIButton。结果是-

@IBAction func comma1() {

}

然后我可以放置其余的outletsactions

答案 24 :(得分:0)

对于我来说,我有一个相同的类名,而xcode无法识别我要针对的是哪个类,因此在选择类名时要小心。

答案 25 :(得分:0)

我知道大多数情况下这只是Xcode的表现,但就我而言,没有建议的操作能够解决问题,并且我认为这是我在尝试重命名项目时犯的一个错误,因此我最终创建了一个新项目并将所有内容导入。

这最终解决了它。

答案 26 :(得分:0)

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

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

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

如果你已完成上述所有操作,那么它应该有效。

答案 27 :(得分:0)

删除文件(仅限参考文献)并重新添加文件。

答案 28 :(得分:0)

在我的情况下,有用的东西(它有点怪异,但有效)如下:

尝试添加数据源(例如,像UITableViewDataSource一样扩展到ViewController)。 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.
}

答案 29 :(得分:0)

我只是重启Xcode,然后就可以了。

答案 30 :(得分:0)

对我来说,我指定了一个自定义类的视图未能由接口构建器编译。它标记为@IBDesignable

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

答案 31 :(得分:0)

试试这个

rm -rf ~/Library/Caches/com.apple.dt.Xcode
defaults delete com.apple.dt.Xcode IDEIndexDisable
defaults write com.apple.dt.Xcode IDEIndexEnable 1 

答案 32 :(得分:0)

从取景器Xcode检查是否关闭。

强制退出Xcode并重新启动。

产品>清洁

答案 33 :(得分:0)

就我而言,这是因为Xcode索引进程已停止运行。重新启动我的Mac修复它。

答案 34 :(得分:0)

好的家伙几乎看到了所有最佳答案,但没有人能为我工作。

那么对我有用的是:

  1. 从Xcode项目中复制Derived Data地址。 这可以使用以下方法完成:
  2. Xcode -> Preferences -> Location Tab -> Derived Data

    1. Close Xcode

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

    3. 现在打开Xcode,瞧!

答案 35 :(得分:-1)

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

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

答案 36 :(得分:-1)

正如我对@ ChrisHarrison的答案所评论的那样,这些东西对我来说不起作用,但删除派生数据就像我在https://stackoverflow.com/a/16182672/1449799

中删除派生数据一样。

答案 37 :(得分:-1)

尝试删除项目的派生数据