【问题标题】:Cannot link an IBOutlet for UITextField无法为 UITextField 链接 IBOutlet
【发布时间】:2016-02-09 03:57:37
【问题描述】:

我尝试在我的 Main.Storyboard 上添加一个插座,然后 CTRL + 将它拖到我相应的视图控制器中。

class LoginViewController: UIViewController {
    @IBOutlet weak var nameField: UITextField!
}

执行此操作时,我收到此错误

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x7f7ff051e860> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key nameField.'

什么可能导致这个问题?

【问题讨论】:

    标签: ios swift uitextfield iboutlet


    【解决方案1】:

    这里的问题是它创建了UIViewController 的实例,而不是LoginViewController 的实例。您可以判断,因为错误消息显示的是&lt;UIViewController 0x7f7ff051e860&gt;,而不是&lt;LoginViewController 0x7f7ff051e860&gt;。由于UIViewController 没有nameField 插座,因此当情节提要加载器尝试连接该插座时会出现错误。

    有两种可能的解释:

    1. 情节提要中的自定义类未设置为LoginViewController。在情节提要的场景中选择视图控制器。从菜单栏中,选择视图 > 实用程序 > 显示身份检查器。然后,在 Identity Inspector(右侧窗格)中,确保将类设置为 LoginViewController。

      如果 Xcode 允许您连接插座,您必须在某个时候设置自定义类。但之后您可能不小心撤消了更改。

    2. 包含LoginViewController 源代码的文件不是您的目标(您的应用程序)的一部分。在这种情况下,调试控制台中应该有另一条消息,如下所示:

      2016-02-08 22:08:04.569 test[3049:9594499] Unknown class _TtC4test16MyViewController in Interface Builder file.
      

      要解决此问题,请打开您的 LoginViewController.swift 文件(或包含该类的任何文件)。从菜单栏中,选择“视图”>“实用工具”>“显示文件检查器”。在 File Inspector(右侧窗格)中,找到 Target Membership 部分并打开应用旁边的复选框。

    【讨论】:

    • 第二个问题是我的问题!我重新连接了 Target Membership 并删除了一些以前的网点,这解决了问题。谢谢!
    【解决方案2】:

    原因是您在界面生成器中仍然有一个无效的插座连接到您的UITextField。

    在界面生成器中选择您的标签,然后单击最右侧面板中的箭头图标,并检查您是否没有任何多余的 参考那里的网点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      相关资源
      最近更新 更多