【问题标题】:How do I use an NSFormatter subclass with an NSPopUpButton如何将 NSFormatter 子类与 NSPopUpButton 一起使用
【发布时间】:2009-05-05 06:09:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: cocoa interface-builder nsformatter


    【解决方案1】:

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

    据我了解,您有一个要用作数据源的纯字符串数组,只是您想为标题显示不同的字符串,对吧?

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

    【讨论】:

    • 谢谢,我实际上是直接将 NSPopUpButton 绑定到数组而不使用数组控制器,因此无法显示数组中对象的特定属性。你让我意识到我真正需要做的只是添加一个数组控制器,然后绑定到数组控制器的排列对象/self.myKeyPathToDisplay 值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多