这个问题类似于这个问题:How do I use an NSFormatter subclass with an NSPopUpButton
正如那个问题所提到的,似乎NSPopUpButton的单元格使用的'格式化程序'似乎不起作用。我想知道这是否是预期的,或者是否实际上有目的设置NSPopUpButton的格式化程序。
现在,我有一个NSPopUpButton,其“内容对象”绑定到NSArrayController的arrangeObjects,其“内容数组”是NSNumber的NSArray。将NSPopUpButton单元格的格式化程序设置为以货币格式格式化NSNumbers的简单NSNumberFormatter不起作用;弹出菜单显示未格式化的数字。
我想知道如何格式化NSPopUpButton弹出菜单中显示的字符串?我觉得这应该是相当直接的;必须使用值变换器,或显示路径的特殊值,似乎有点矫枉过正,应该更容易。
提前致谢。
答案 0 :(得分:0)
如果单元格不支持格式化程序,那么您可以提供替代属性,如-formattedCost而不是-cost。由于弹出按钮的菜单项不是用户可编辑的,因此不需要任何花哨的东西。
您的-formattedCost属性将使用共享的NSNumberFormatter实例并返回格式正确的-cost字符串。
- (NSString *)formattedCost
{
return [mySharedCurrencyFormatter stringFromNumber:[self cost]];
}
“formattedCost”属性是您要绑定以显示的属性。其他注意事项:您需要将“formattedCost”键注册为依赖于“cost”键。这样,当成本发生变化时,您的弹出窗口将更新(因为这会触发“formattedCost”也会更改)。