可可无法连接动作

Posted

技术标签:

【中文标题】可可无法连接动作【英文标题】:cocoa could not connect action 【发布时间】:2014-07-25 04:18:09 【问题描述】:

我一直在摆弄 Objective-C + Cocoa 并编写一个相当简单的 Cocoa 应用程序。然后我遇到了一个对我的程序执行没有影响的运行时错误:

无法将操作 textField: 连接到类 BarController 的目标

我正在尝试从 MainMenu.xib 中拉出一些窗口,并使用单独的控制器和 xib 文件加载它们。

在新 xib 的一个窗口中,我创建了一个文本字段并将其链接到新 NSWindowController 子类中的 IBOutlet NSTextField (textField)。它有效,我可以使用 textField 来更新文本字段的内容。

我很好奇为什么会出现上述运行时错误,我希望理解它会解开 UI 构建过程中的一些魔力。

【问题讨论】:

【参考方案1】:

简单的IBOutlets 并没有什么魔力,真的 - 当使用绑定或通过 First Responder 和响应者链发送到某个未知目标的操作时,乐趣就开始了 :-)

关于您的错误:听起来您已将插座连接到目标类中不存在的目标?

您可能已经在所有者的类所在的某个位置建立了与File Owner(或其他代理对象)中的属性的连接,例如MyAppDelegate. 然后,您将窗口(或包含插座的其他对象)移动到其他某个 .xib,现在所有者的类是 MyWindowController,它没有与您连接插座的同名属性 - 瞧,运行时将无法在运行时为您的插座建立连接。

只需在界面编辑器中仔细检查您的网点,可能已经在看起来可疑的网点旁边显示了某种警告消息。

删除或重新分配它们就完成了。

【讨论】:

谢谢!我删除/重新创建了对象并注意到我仍然需要一个 IBAction 方法(即使文本字段已禁用可编辑!)。所以它抱怨我没有办法,也没有明显的运行时问题。 是的,不幸的是,这些问题在运行时并没有真正出现(至少在默认设置/标志/环境变量中)。

以上是关于可可无法连接动作的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 可可应用程序中的 Internet 连接通知

使用可可获取 Mac OS X 当前连接的 wifi 网络的安全类型

Xcode 无法识别新的出口和动作连接

我无法将按钮连接到任何插座或操作

通过可可绑定将数组与字典连接

无法将动作连接到 Xcode 6.1.1 中的现有函数