NSPopupButton を使用してカラー チューザーを作成しようとしていますが、一番下にセパレーターと「カスタム…」オプションが必要です。配列から色を読み込んで、セパレーターと「カスタム」アイテムを一番下に付けることは可能ですか? もしそうなら、どのように?
ありがとう!
NSPopupButton を使用してカラー チューザーを作成しようとしていますが、一番下にセパレーターと「カスタム…」オプションが必要です。配列から色を読み込んで、セパレーターと「カスタム」アイテムを一番下に付けることは可能ですか? もしそうなら、どのように?
ありがとう!
同様の PopUpButton を作成しましたが、まだ既定の色を固定配列にバインドしていません (ただし、現在取り組んでいます)。ここには 2 つのアプローチがあります。どちらも純粋主義者にはハッキングと見なされる可能性がありますが、仕事は確実に完了します。
NSPopUpButtonCell をサブクラス化し、attachPopUpWithFrame をオーバーライドして、独自のメニュー項目を追加します。バインドされたアイテムと一緒にこれを試したことはありません。
'Custom ..' オブジェクトを配列にハードコードし、表示されたカラー パネルのアクションを実行して、新しい項目を配列に追加します。
自分で手作りするのではなく、実際にはNSColorWellを使用する必要があります。Appleが他のプラットフォーム(特にLinux)よりも優れたGUIを備えている理由の1つは、開発者がこの種のことを行うために標準コンポーネントを使用しているためです。「インターフェースがより簡潔になると思うので」のような議論は、GIMPがGUIを設計しない方法のそのような主要な例である理由です。
とは言うものの、基本的にあなたがやろうとしているのは、固定サイズのリストではなく、動的メニューを定義することです(InterfaceBuilderで行うかもしれません)。これは、NSMenuクラスとNSMenuItemクラスを介して実行できます。
メニューをオンデマンドで表示するのではなく、アプリケーションがデフォルトの配列で起動したときにメニューを入力する必要があります。次に、配列が(モデルオブジェクトを介して)変更されると、メニューの再作成がトリガーされます。または、menuNeedsUpdate:メッセージでメニューをトラップします。
バインディングを使用していません。「カスタム…」は簡単にできますが、セパレーターはできません。
とにかく、NSColorWell を使用しないのはなぜですか?