将Cocoa NSComboBox值绑定到对象

The*_*man 3 cocoa binding nsarraycontroller cocoa-bindings nscombobox

假设我有一个NSObject代表一个国家的子类,例如

@interface CountryInfo : NSObject

@property (nonatomic, retain) NSString *countryName;
Run Code Online (Sandbox Code Playgroud)

我的模型包含NSMutableArrayCountryInfo秒.我想将数组绑定到NSComboBox.组合框应显示国家/地区名称,并允许用户选择国家/地区.

所以,我像这样设置我的.xib:

CountryArrayController(NSArrayController)

ContentArray

  • 绑定到:文件所有者 >模型关键路径:self.model.countries

NSComboBox

内容

  • 绑定到:CountryArrayController >控制键:arrangedObjects

内容价值

  • 绑定到:CountryArrayController >控制键:arrangedObjects >型号主要路径:国家名称

到现在为止还挺好.现在,如何绑定的价值NSComboBox?文件说明:

"An NSString or NSNumber that specifies the value of the NSComboBox."
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我注意到我可以将它绑定到NSString我的模型上,它将反映所选的countryName.但我想绑定到CountyInfo对象本身!无论是直接,还是通过绑定到我的阵列控制器上的选择:我该如何设置它?

The*_*man 10

我正在接近这个错误 - 使用正确的控制NSPopUpButton而不是NSComboBox.

NSComboBox具有不同的行为,因为它需要支持用户直接输入文本的场景.NSPopUpButton被设计为仅使用预定义的一组值,并按照预期的"选择"绑定行为.