如何将NSFormatter子类与NSPopUpButton一起使用

时间:2009-05-04 18:46:30

标签: cocoa interface-builder nsformatter

我想使用NSFormatter子类来格式化我用来显示选项列表的NSPopUpButton的内容。

基本上我有一个MyObjects的NSArray,它通过内容值绑定绑定到NSPopUpButton,我希望在弹出菜单中显示除-description返回的内容之外的东西。我真的不想使用变换器,因为我必须创建一个全新的数组并将每个对象转换为字符串,然后再将其添加到新数组中。

在NSPopUpButton上通过IB或代码使用setFormatter:不起作用,我怀疑是因为只有单个单元格的格式化程序才会应用于列表中的项目。

是否有一种简单的方法可以为NSPopUpButton的所有单元格设置格式化程序?基本上我想只能设置一次而忘记它。

1 个答案:

答案 0 :(得分:1)

通常,您将弹出按钮绑定到包含自定义模型对象的数组控制器(通过内容绑定),并使用内容值绑定在这些对象上指定键路径,并使用要用作标题的字符串

根据我的理解,你有一组想要用作数据源的纯字符串,只有你想为标题显示不同的字符串,对吗?

我不确定为什么如果设置如上所述使数据转换器不起作用 - 或者我可能误解了什么?你有一个绑定到实际的字符串,另一个绑定到使用变换器的字符串,但他们都将使用相同的数组控制器。您的其他选项是创建一个模型类来包装字符串并提供title属性,或者在NSString上创建一个类别,该类别返回您的标题以用作显示值绑定。在所有这些情况下,您可以在代码中创建自己的NSFormatter,并使用它来返回正确的字符串标题。