基本Cocoa绑定:从IB中的菜单切换布尔值

时间:2010-01-10 08:03:33

标签: cocoa macos interface-builder cocoa-bindings

我刚刚开始使用Cocoa Bindings,虽然我已经阅读了大部分文档,但我仍然在努力实现一个基本功能,让我觉得我做错了或者它可能不是可以通过IB。

目标:有一个名为“切换可见性”的菜单项切换应用程序控制器(AppController)中名为“visibility”的布尔属性的状态。我认为这应该可以通过IB完全实现。

(注意:这里没有使用CoreData)

我认为需要发生的是我需要一个NSObjectController,其内容出口设置为我的AppController类。然后我想我需要使用Action Innvocation绑定。但这是我遇到麻烦的地方。

是否应选择Controller Key?模型关键路径应该是我的布尔属性的名称吗?选择器名称应该是什么?

或者我是否需要设置一个名为“toggleVisibility”的单独操作方法,我可以绑定到该方法?如果我这样做,为什么我不只是使用标准的目标/动作关联,而不是绑定?

赞赏任何输入/指示。

1 个答案:

答案 0 :(得分:4)

  

目标:让一个名为“Toggle visibility”的菜单项切换我的应用程序控制器(AppController)中名为“visibility”的布尔属性的状态。

你的目标告诉你失败的原因。

在您对目标的描述中,您说您要将此菜单项设置为命令,动词,命令句 - “切换可见性”。但是that's not the right title for the menu item

此外,使用Bindings实现动词菜单项本身就很困难,因为Bindings是错误的工具。绑定用于在UI中公开属性。它不是用于执行命令。

正确的基于Bindings的解决方案支持正确的标题。

菜单项的正确标题是“可见”。

仅此一项就可以为您提供如何进行的提示。这是另一个:当选择可见时,菜单项应该有一个复选标记;当它不可见时,菜单项应该没有标记。

您希望将菜单项的属性最终绑定到控制器的布尔属性。通常,菜单项的此属性为state,但无论出于何种原因,其绑定名为value

因此,将菜单项的value绑定绑定到控制器的Boolean属性。