我有一个NSMenuItem。我希望menuitem的state
又名value
又名checkmark
匹配我在对象中使用的布尔值。
我目前正在使用“已发送操作” - > “选择器”插座。将其拖到我的对象上,然后使用下面的IBAction:
- (IBAction) setMyGlobalBoolean:(id)sender
{
if(globalBoolean)
{
globalBoolean = FALSE;
[sender setState: NSOffState];
}
else if(!globalBoolean)
{
globalBoolean = TRUE;
[sender setState: NSOnState];
}
}
但是,我觉得我应该使用Bindings Inspector
将Value
属性绑定到布尔变量。
问题在于,当我尝试这样做时,我无法将我的布尔值链接到该值。我可以将值连接到IB中的对象。但是“控制器密钥”字段是空白且不可编辑的。
我可以让Controller Key字段工作的唯一方法是将Value字段挂钩到Shared User Defaults Controller
...我不知道那是什么或为什么/如果我应该使用它
答案 0 :(得分:0)
你已经提到你有一个全局布尔值(这表明它对你的应用程序是全局的)但是你也谈到了试图通过对象访问布尔值。
如果您想在NSUserDefaults
中存储布尔值,那么您应该使用Shared Used Defaults Controller
。您可以访问控制器密钥,因为它是一个控制器。
如果布尔值是您对象的成员,那么您应该创建访问器,以便它可以与键值编码一起使用。
如果布尔值确实是全局的,那么我认为你不能将值绑定到它。我建议您在App Delegate中创建“全局”布尔值,然后将NSMenuItem绑定到App Delegate。由于App Delegate不是控制器,因此您只需要使用globalBoolean作为模型密钥路径。