2009-05-04 16 views
0

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

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

使用setFormatter:通过IB或代码在NSPopUpButton本身无法正常工作,我怀疑是因为只有单个单元格的格式化程序应用于列表中的项目。

有没有简单的方法来设置NSPopUpButton的所有单元的格式化程序?基本上我想只能设置一次而忘记它。

回答

1

通常情况下,您会将弹出式按钮绑定到包含自定义模型对象的数组控制器(通过内容绑定),并使用内容值绑定指定这些对象上的keypath,并使用要用作标题。

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

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

+0

谢谢,我实际上是直接将NSPopUpButton绑定到数组而不使用数组控制器,因此无法显示数组中对象的特定属性。你让我意识到,我真正需要做的只是添加一个数组控制器,然后绑定到数组控制器的sortedObjects/self.myKeyPathToDisplay值 – 2009-05-04 23:57:12