【问题标题】:Could not insert new outlet connection: Could not find any information for the class named无法插入新的插座连接:找不到名为的类的任何信息
【发布时间】:2015-07-07 13:36:41
【问题描述】:

我在 Xcode 上收到一个错误,说没有关于视图控制器的信息。

无法插入新的插座连接:找不到名为的类的任何信息

为什么会这样?

【问题讨论】:

  • 我想这已经被问过了:stackoverflow.com/questions/17735182/…
  • 我只是退出了 Xcode,然后重新打开它。编译器将重新加载所有文件,它可以检测到你正在寻找的文件
  • 检查您的视图控制器文件中没有未连接的插座。我发现我做到了。删除后就没问题了。
  • 对我来说,上述解决方案都不起作用。我不得不删除视图控制器,我将其复制并再次粘贴到我的情节提要中以重复使用它。然后我拖动了一个新的视图控制器在情节提要中,一切都很好:)。我希望它可以帮助有同样问题的人。
  • 这是 XCode 中的一个 BUG,我不知道他们为什么不修复它。您必须关闭 XCode 并重新打开。当您再次尝试放置插座时,但这一次在制作之前留下一堆 ENTERS。您不必删除任何内容或将时间浪费在其他选项上...这将解决您的问题。

标签: ios swift xcode interface-builder iboutlet


【解决方案1】:

以下是一些可以解决此问题的方法(按难度递增的顺序):

  • 清理项目(产品 > 清理
  • 手动粘贴

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }
    

    并控制拖动到它。 (根据需要更改类型。)另请参阅this

  • 完全关闭 Xcode 并重新启动您的项目。

  • 删除 Derived Data 文件夹(转到 Xcode > Preferences > Locations 并单击 Derived Data 文件夹旁边的灰色箭头。然后删除您的项目文件夹。)李>
  • 单击类上的删除,删除引用(不是移动到废纸篓),然后重新添加。 (见this answer

【讨论】:

  • 不要忘记删除视图控制器上的类,以便此步骤可以正常工作
  • 这些步骤在 Xcode 8.3.2 中都不适合我。我必须“显示身份检查器”>清除“类”字段(突出显示自定义类的名称并删除)>在“类”字段中重新输入类名。 Xcode 自动完成类名。然后我按回车键。
  • alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*' 行添加到您的~/.bashrc 以使用命令purgederiveddata 通过一个命令清除
  • 我找到了解决此问题的另一种方法,当我更改了一些构建设置以提高构建速度时,这发生在我身上。 stackoverflow.com/a/50555888/2952876
  • 我强烈建议大家在下面尝试我的解决方案。知道人们不得不重新启动他们的计算机以解决经常出现的错误会感到很沮丧。
【解决方案2】:

或者,如果上述方法均无效,请先在文件中输入插座名称@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!,然后单击并从笔尖中的插座拖动到您刚刚以编程方式创建的变量。它应该可以在没有任何清理、构建和删除任何东西的麻烦的情况下工作。

【讨论】:

  • 通常是更快的解决方案,而不是花费大量时间来清理、构建等。谢谢。
  • 非常好,一旦你这样做,自动开始显示,谢谢。
  • 首先将您的 XIB 对象连接到 IBoutlets。然后尝试连接它们的约束 IBOutlets。没有这个,它总是会显示错误。
  • 您尝试插入新插座的位置也会有所不同。因为,列表的顶部(上面有空白的地方)有效;列表中间没有。
  • 这应该被标记为最佳答案。它更容易、更快、更可靠。它也一直有效!干得好,谢谢@StephenPaul
【解决方案3】:

只需执行以下两个步骤即可消除此错误

  1. 使用 Product > clean 清理项目
  2. 运行项目

现在尝试添加动作或出口。 而已。

快乐编码

【讨论】:

  • 奇怪......这两个简单的步骤也帮助我解决了这个问题。所以我建议,首先尝试这些简单的步骤:-)
【解决方案4】:

最佳答案中的任何提示都不适合我。快疯了。然后注意到助理编辑器不知何故被设置为 Manual 并且我在 ViewController.swift (Interface) 而不是 ViewController.swift 文件上。

改变了这一点,问题就解决了。有点尴尬,但是嘿,我们都在学习。

【讨论】:

  • 救命答案!其他答案都没有一劳永逸地解决它。太糟糕了,错误描述没有给出任何提示,表明您可能在 wearg 文件中。谢谢。为图像+1,这一切都清楚了。
  • 我注意到一些非常相似但不同的东西:在显示类名的顶部路径中,只有类名,但缺少路径的开头为 myProject > appName > controller 然后班上。我选择了另一个类,然后回到有问题的类,一切正常
【解决方案5】:

以下是为我解决的步骤:

  1. 从 View(storyboard/xib) 中移除类名引用并保存;
  2. 再次添加类名并保存;
  3. 清理和构建;

完成!

【讨论】:

  • 这对我有用。其他答案均无效
【解决方案6】:

我遇到了同样的问题。我厌倦了以下解决方案,但没有奏效:

  1. Clean Project (cmd + shift + k) 甚至 Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived dataModule Cache content

以下解决此问题的方法:

  1. 移至源代码文件并手动写入IBOutlet / IBAction(首选复制粘贴)

  1. 然后移动到 Storyboard 文件并打开Utilites 窗口
  2. 转到Connection Inspector
  3. 然后将编写在源文件中的IBOutletIBAction与Interface Builder连接起来。

【讨论】:

  • 拖动 Outlets/Actions 根本不起作用,但是在我像这样手动完成之后,一切又正常了。
  • 这是建立连接的标准替代方法。对于单选按钮操作,唯一的方法是 AFAIK。在storyboard中,也可以在控制器上右键,找到函数,进行连接。
【解决方案7】:

我遇到了同样的问题。我意识到,当我尝试通过控制拖动创建出口时,选择了 X-Code Manual 项目

设置为自动后就可以了

【讨论】:

  • 我遇到了这个确切的问题。甚至没有注意到差异。
  • 太棒了!!!我已经为这个 bug 清理项目、重新启动 xCode、删除派生数据浪费了很多时间,但那是唯一对我有用的解决方案!非常感谢!
【解决方案8】:

我通过以编程方式创建标签和文本字段解决了这个问题,然后从代码左侧的小空圆圈按住 Command 并拖动到情节提要上的组件。为了说明我的观点:我写了@IBOutlet weak var HelloLabel: UILabel!,然后按下命令并将代码拖到情节提要上的组件中。

【讨论】:

  • 这个解决方案非常适合我!除了@IBOutlet weak var myButton: UIButton,我使用相同的过程设置@IBAction func doSomething(_ sender: Any) { },然后将此函数连接到我故事板上的UIButton。感谢分享这个@KuboAndTwoStrings
【解决方案9】:
  1. 关闭您正在处理的项目。
  2. 删除项目的【DerivedData】文件夹。 (这个文件夹可能在里面 您项目的文件夹,或里面
    ~/Library/Developer/Xcode/DerivedData/
    (您的项目)/)或您设置的其他地方。
  3. 重新启动您的项目。

【讨论】:

    【解决方案10】:

    我在重命名课程时遇到了这个错误。然后我按照以下步骤解决了它

    • 在 Xcode 菜单中 -> Product -> Clean
    • RestartXcode

    【讨论】:

    • 这是唯一对我有用的解决方案。
    【解决方案11】:

    我发现了一个更简单的解决方法,因为我可以在 XCODE 9 上找到这个错误。

    第一步去你的视图控制器并手动编写你想要连接的属性,如下例所示,确保你使用下面的格式。

    @IBOutlet weak var questionsStackView: UIStackView!

    第二步转到您的故事板并将您的视图或您尝试连接的任何内容连接到您在第 1 步中创建的属性。

    以上内容将节省您删除和清理派生数据的时间。

    【讨论】:

      【解决方案12】:

      请执行以下两个步骤以消除此错误。

      1.  Clean Project using Product -> clean.
      2.  Run the Project.
      

      现在尝试添加/连接动作或出口。

      多次为我工作。

      【讨论】:

        【解决方案13】:

        在我的情况下,这是因为我在 IB 中选择了一个新的 UIViewController 文件,然后尝试按 ctrl 拖动到这个新控制器,而无需先删除 Connections Inspector 中的先前连接。请先删除这些,然后重试。

        【讨论】:

          【解决方案14】:

          对我来说,它在右侧选项卡 > 本地化时有效,我选中了英语复选框。最初只检查了 Base。之后我就没有更多的问题了。希望这会有所帮助!

          【讨论】:

            【解决方案15】:

            我选择了自动选项来选择 ViewController.swift 文件。然后我就可以开网点了。

            【讨论】:

              【解决方案16】:

              当我将Swift 文件添加到Objective-C 项目中时发生这种情况。
              所以,在这种情况下,你能做的就是。 .

              • Select MY_FILE.Swift >> Delete >> Remove Reference
              • Select MY_FOLDER >> Add MY_FILE.Swift
              • Voila ! You are good to go .

              【讨论】:

              • 为此加油!我已经尝试自己解决这个问题半小时了,哈哈。不过,Storyboards 中的此类问题很容易解决。谢谢!这对我帮助很大!
              【解决方案17】:

              最简单的解决方案:- 我使用 xCode 7 和 iOS 9。

              在您的 .m 中

              删除#import "VC.h"

              保存 .m 并再次链接您的插座,它工作正常。

              【讨论】:

                【解决方案18】:

                我使用 xCode 7 和 iOS 9。

                在您的 .m 中

                删除#import "VC.h"

                保存 .m 并再次链接您的插座,它工作正常。

                在您的 .m 中

                添加#import "VC.h"

                保存.m

                【讨论】:

                  【解决方案19】:

                  这些都不适合我,但我确实想通了。

                  storyboard里面,我把对应的ViewController复制到剪贴板中并删除了,然后我又粘贴了一遍。

                  突然间,一切又像魅力一样运作了!

                  【讨论】:

                    猜你喜欢
                    • 2012-06-15
                    • 2018-06-12
                    • 2013-02-23
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多