NSPopUpButtonCellを使えば、Cellをクリックしたら出てくるPopupメニューを簡単に制御できるか実験してみた。結論からいうと、ちょっと手に余る。
別プロジェクトを作って、NSPopUpButtonCellを表示してみる。
コードはほとんど現在作っているFileManagerのプロジェクトから流用したのでそれほど手間はかかっていない。
ドキュメントを読んだ限りでは、オブジェクトを生成してNSMenuをsetしたら、あとは難しいことはNSPopUpButtonCellがやってくれる、ように思える。(大いなる誤解(^^;))
で、@"/Developer/Applications/Audio"みたいなpathを分解して、それぞれのサブディレクトリをMenuとして表示するPopUpをこの程度まで作ってみた。
各ボタンにMenuをセットして
[button drawWithFrame:rect inView:self];
としてみたら見事にPopUpButtonとして表示してくれるものの、見た目はこれじゃいかん、ということで
[button drawInteriorWithFrame:rect inView:self]
とボタン内部だけ描画してみたらこうなってしまった。
CellなのでEventは表示しているViewで管理しないといけないようだし、drawInteriorWithFrameをカスタマイズしていくのはかなり苦労がありそう。じゃあNSPopUpButtonそのものを使う、と言う手はどうかというと、見た目のカスタマイズはどちらにしろNSPopUpButtonCellの役目なので苦労は同じだろう、と判断した。
というわけでNSPopUpButtonCellをめぐる実験はこれだけで終了とあいなった。
0 件のコメント:
コメントを投稿