无法为UITextField链接IBOutlet

时间:2016-02-09 03:57:37

标签: ios swift uitextfield iboutlet

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

可能导致此问题的原因是什么?

2 个答案:

答案 0 :(得分:2)

这里的问题是它创建了UIViewController的实例,而不是LoginViewController的实例。您可以告诉,因为错误消息显示的是<UIViewController 0x7f7ff051e860>,而不是<LoginViewController 0x7f7ff051e860>。由于UIViewController没有nameField插座,因此当故事板加载程序尝试连接该插座时会出现错误。

有两种可能的解释:

  1. 故事板中的自定义类未设置为LoginViewController。在故事板中选择场景中的视图控制器。从菜单栏中选择查看&gt;公用事业&gt;显示Identity Inspector。然后,在Identity Inspector(右侧窗格)中,确保该类设置为LoginViewController

    setting the custom class

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

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

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

    要解决此问题,请打开LoginViewController.swift文件(或包含该类的任何文件)。从菜单栏中选择查看&gt;公用事业&gt;显示文件检查器。在文件检查器(右侧窗格)中,找到目标成员资格部分,然后打开应用旁边的复选框。

    adding to the target

答案 1 :(得分:0)

原因是您仍然在界面构建器中的UITextField连接了无效的插座。

在界面构建器中选择您的标签,然后单击最右侧面板中的箭头图标,并检查您是否没有任何额外的 在那里引用插座。

enter image description here