NSFormatter可以与NSPopUpButton一起使用吗?

时间:2010-01-11 01:13:11

标签: cocoa nspopupbutton nsformatter

这个问题类似于这个问题:How do I use an NSFormatter subclass with an NSPopUpButton

正如那个问题所提到的,似乎NSPopUpButton的单元格使用的'格式化程序'似乎不起作用。我想知道这是否是预期的,或者是否实际上有目的设置NSPopUpButton的格式化程序。

现在,我有一个NSPopUpButton,其“内容对象”绑定到NSArrayController的arrangeObjects,其“内容数组”是NSNumber的NSArray。将NSPopUpButton单元格的格式化程序设置为以货币格式格式化NSNumbers的简单NSNumberFormatter不起作用;弹出菜单显示未格式化的数字。

我想知道如何格式化NSPopUpButton弹出菜单中显示的字符串?我觉得这应该是相当直接的;必须使用值变换器,或显示路径的特殊值,似乎有点矫枉过正,应该更容易。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果单元格不支持格式化程序,那么您可以提供替代属性,如-formattedCost而不是-cost。由于弹出按钮的菜单项不是用户可编辑的,因此不需要任何花哨的东西。

您的-formattedCost属性将使用共享的NSNumberFormatter实例并返回格式正确的-cost字符串。

- (NSString *)formattedCost
{
    return [mySharedCurrencyFormatter stringFromNumber:[self cost]];
}

“formattedCost”属性是您要绑定以显示的属性。其他注意事项:您需要将“formattedCost”键注册为依赖于“cost”键。这样,当成本发生变化时,您的弹出窗口将更新(因为这会触发“formattedCost”也会更改)。