无法 link UITextField 的 IBOutlet

Cannot link an IBOutlet for UITextField

我尝试在我的 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.'

是什么导致了这个问题?

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

Select 您在界面生成器中的标签并单击最右侧面板中的箭头图标,并检查您是否没有任何额外的内容 那里有参考网点。

这里的问题是它正在创建 UIViewController 的实例,而不是 LoginViewController 的实例。您可以分辨出来,因为错误消息显示的是 <UIViewController 0x7f7ff051e860>,而不是 <LoginViewController 0x7f7ff051e860>。由于 UIViewController 没有 nameField 插座,当情节提要加载程序尝试连接该插座时会出现错误。

有两种可能的解释:

  1. 故事板中的自定义 class 未设置为 LoginViewController。 Select 故事板场景中的视图控制器。从菜单栏中,选择“视图”>“实用程序”>“显示标识检查器”。然后,在身份检查器(右侧窗格)中,确保 class 设置为 LoginViewController.

    你一定是在某个时候设置了自定义class,如果Xcode让你连接插座。但是您之后可能不小心撤消了更改。

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

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

    要解决此问题,请打开您的 LoginViewController.swift 文件(或任何包含 class 的文件)。从菜单栏中选择“视图”>“实用程序”>“显示文件检查器”。在文件检查器(右侧窗格)中,找到目标成员资格部分并选中您的应用程序旁边的复选框。