我刚刚开始使用Cocoa Bindings,虽然我已经阅读了大部分文档,但我仍然在努力实现一个基本功能,让我觉得我做错了或者它可能不是可以通过IB。
目标:有一个名为“切换可见性”的菜单项切换应用程序控制器(AppController)中名为“visibility”的布尔属性的状态。我认为这应该可以通过IB完全实现。
(注意:这里没有使用CoreData)
我认为需要发生的是我需要一个NSObjectController,其内容出口设置为我的AppController类。然后我想我需要使用Action Innvocation绑定。但这是我遇到麻烦的地方。
是否应选择Controller Key?模型关键路径应该是我的布尔属性的名称吗?选择器名称应该是什么?
或者我是否需要设置一个名为“toggleVisibility”的单独操作方法,我可以绑定到该方法?如果我这样做,为什么我不只是使用标准的目标/动作关联,而不是绑定?
赞赏任何输入/指示。
答案 0 :(得分:4)
目标:让一个名为“Toggle visibility”的菜单项切换我的应用程序控制器(AppController)中名为“visibility”的布尔属性的状态。
你的目标告诉你失败的原因。
在您对目标的描述中,您说您要将此菜单项设置为命令,动词,命令句 - “切换可见性”。但是that's not the right title for the menu item。
此外,使用Bindings实现动词菜单项本身就很困难,因为Bindings是错误的工具。绑定用于在UI中公开属性。它不是用于执行命令。
正确的基于Bindings的解决方案支持正确的标题。
菜单项的正确标题是“可见”。
仅此一项就可以为您提供如何进行的提示。这是另一个:当选择可见时,菜单项应该有一个复选标记;当它不可见时,菜单项应该没有标记。
您希望将菜单项的属性最终绑定到控制器的布尔属性。通常,菜单项的此属性为state
,但无论出于何种原因,其绑定名为value
。
因此,将菜单项的value
绑定绑定到控制器的Boolean属性。