0

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

如该问题所述,似乎 NSPopUpButton 的单元格使用的“格式化程序”似乎不起作用。我想知道这是否是预期的,或者是否真的有设置 NSPopUpButton 的格式化程序的目的。

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

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

提前致谢。

4

1 回答 1

0

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

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

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

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

于 2010-01-11T15:06:53.650 回答