2009-05-04 8 views
0

NSFormatterサブクラスを使用してNSPopUpButtonのコンテンツをフォーマットしたい場合、選択リストを表示するために使用します。NSPopUpButtonでNSFormatterサブクラスを使用するには

基本的に私はContent Valuesバインディングを介してNSPopUpButtonにバインドされたMyObjectsのNSArrayを持っていますが、-descriptionによって返されるもの以外の何かをポップアップメニューに表示したいとします。私は本当にトランスフォーマーを使いたくはありません。なぜなら、完全に新しい配列を作成し、それを新しい配列に追加する前に各オブジェクトを文字列に変換する必要があるからです。

NSPopUpButton自体でIBまたはコードを使用してsetFormatterを使用すると、個々のセルのフォーマッタのみがリストの項目に適用されるため、疑わしいと思われます。

NSPopUpButtonのすべてのセルにフォーマッタを設定する簡単な方法はありますか?基本的には、一度設定して忘れることができます。

答えて

1

通常は、(コンテンツバインディングを介して)カスタムモデルオブジェクトを含むアレイコントローラにポップアップボタンをバインドし、コンテンツ値バインディングを使用して、それらのオブジェクトのキーパスを、タイトル。

私が理解しているように、データソースとして使用したいプレーンストリングの配列を持っていますが、タイトルに別の文字列を表示したいだけですか?

私は上記のように設定した場合、なぜデータトランスフォーマを作成できないのか分かりません。何か誤解していますか?実際の文字列にバインドする文字列と、トランスフォーマを使用して文字列にバインドする文字列がありますが、どちらも同じアレイコントローラを使用しています。あなたの他のオプションは、文字列を囲み、タイトルプロパティを提供するためのモデルクラスを作成したり、タイトルを返すNSString上に表示値バインディングとして使用するカテゴリを作成することです。これらすべてのケースでは、独自のNSFormatterをコード内に作成し、それを使って正しい文字列タイトルを返すことができます。

+0

ありがとう、実際にNSPopUpButtonを配列コントローラを使用せずに直接配列にバインドしていたため、配列内のオブジェクトの特定のプロパティを表示する方法がありませんでした。あなたは私が本当に必要なのは、アレイコントローラーを追加して、配列コントローラーのalignedObjects/self.myKeyPathToDisplay値にバインドすることでした。 –

+0

私は助けてくれると嬉しいです! –

関連する問題