Cocoa 绑定NSpoupButton';s所选标识符
我有几个弹出按钮,其所选标记保存在用户默认设置中(通过在绑定检查器中绑定所选标记)。现在,我不想保存一个整数,而是想保存一个字符串值(原因很简单,它使用户的默认值更“可读”且更安全),但不幸的是,我没有找到绑定弹出按钮所选标识符的方法。有解决此问题的方法吗?NSpoupButton的绑定可能会有点混乱。各种Content*绑定用于为按钮提供可能的选择列表<代码>内容本身用于提供由弹出按钮中的项目表示的对象列表<代码>内容值用于提供弹出按钮中显示的实际值。例如,Cocoa 绑定NSpoupButton';s所选标识符,cocoa,cocoa-bindings,nspopupbutton,Cocoa,Cocoa Bindings,Nspopupbutton,我有几个弹出按钮,其所选标记保存在用户默认设置中(通过在绑定检查器中绑定所选标记)。现在,我不想保存一个整数,而是想保存一个字符串值(原因很简单,它使用户的默认值更“可读”且更安全),但不幸的是,我没有找到绑定弹出按钮所选标识符的方法。有解决此问题的方法吗?NSpoupButton的绑定可能会有点混乱。各种Content*绑定用于为按钮提供可能的选择列表内容本身用于提供由弹出按钮中的项目表示的对象列表内容值用于提供弹出按钮中显示的实际值。例如,内容可能绑定到模型对象数组,而内容值绑定到这些对象上
内容
可能绑定到模型对象数组,而内容值
绑定到这些对象上的特定键路径,例如名称
,因为您希望在弹出按钮本身中显示每个项的名称属性值
类似地,用于选择的绑定对应于此系统Selected Object
意味着,当选择给定项时,将在绑定属性上选择/设置Content
数组中的底层完整对象,而不仅仅是简单显示的字符串(或数字等)值。另一方面,Selected Value
实际上只会绑定显示的值
总之,在您不使用内容绑定的情况下,这意味着您有两种选择:
选定值
绑定到用户默认值标识符
属性和名称
(或任何您想称之为的)属性的基础模型类。将内容
绑定到这些对象的数组,并将内容值
绑定到该数组。名称
@objcMembers类选项:NSObject{
动态变量名:String
动态变量标识符:字符串
init(名称:String,标识符:String){
self.name=名称
self.identifier=标识符
}
}
类ViewController:UIViewController{
@objc动态变量选项ForPopup=[选项(名称:“项目A”,标识符:“id 1”),
选项(名称:“B项”,标识符:“id 2”),
选项(名称:“项目C”,标识符:“id 3”)]
}
绑定:
至视图控制器-内容
李>弹出选项
至ViewController-内容值
李>弹出窗口的选项。名称
到共享用户默认控制器-控制器键:所选值
,模型键路径:值
WhateverUserDefaultsKeyYouWant
我在这里创建了一个实现选项2的示例项目:绑定所选对象。您绑定了弹出按钮的内容吗?我没有绑定弹出按钮的内容,我在xib编辑器中创建了所有项目。您认为这是唯一的方法吗?不,有很多方法,但是
nspoupbutton
没有选定的标识符绑定或selectItem(withIdentifer:)
方法。如果要绑定选定对象,必须在代码中或通过绑定内容对象设置菜单项的representedObject
。