我一直在摆弄Objective-C + Cocoa并编写一个相当简单的Cocoa应用程序。然后我遇到了一个运行时错误,它对我的程序执行没有影响:
无法将动作textField:连接到类BarController的目标
我正在尝试从MainMenu.xib中拉出一些窗口并使用单独的控制器和xib文件加载它们。
在新xib中的一个窗口中,我创建了一个文本字段,并将其链接到新的NSWindowController子类中的IBOutlet NSTextField(textField)。它工作正常,我可以使用textField来更新文本字段的内容。
我很好奇为什么我得到上面的运行时错误,我希望理解它会清除UI构建过程中的一些魔力。
答案 0 :(得分:0)
普通IBOutlets
并没有多大的魔力,真的 - 当使用通过First Responder和响应者链发送到某个未知目标的Bindings或动作时,这种乐趣开始了: - )
关于你的错误:
听起来您已将插座连接到目标类中不存在的目标?
您可能已在File Owner
(或某个其他代理对象)中的某个属性建立了连接,但该所有者的类位于MyAppDelegate
。
然后你已经将窗口(或包含插座的其他对象)移动到其他.xib,现在所有者的类MyWindowController
没有与您的插座连接的同名属性 - 瞧,运行时将无法在运行时为您的插座建立连接。
只需在界面编辑器中仔细检查您的插座,可能已经在看起来很腥的插座旁边显示了某种警告消息。
删除或重新分配它们,你就完成了。