nstableviewの階層メニューを備えたnspopupbuttoncell
-
28-10-2019 - |
質問
を持っています NSTableView
1つの列が含まれています NSPopUpButtonCell
s。この列はanに割り当てられます IBOutlet
. 。私のアプリケーションのコントローラークラスは、その中にメニューを作成します init
に割り当てます NSTableColumn
'のデータセル、それが NSPopUpButtonCell
.
メニューは次のように見えます:
NSPopUpButton
NSMenu
NSMenuItem item1
NSMenuItem item2
NSMenuItem item3
NSMenu
NSMenuItem item3_1
NSMenuItem item3_2
NSMenuItem item4
NSMenuItem item4_1
NSMenuItem item4_2
NSMenuItem item4_3
メニューをクリックしてitem1またはitem2を選択すると、データソースが tableView:setObjectValue:forTableColumn:row:
発射され、ObjectValueは選択されたアイテムのインデックスである0または1です。ただし、サブメナスの1つからアイテムを選択すると、取得するオブジェクトバリューは-1です。選ばれたメニュー項目を取得するにはどうすればよいですか?
解決
私は-tableviewに頼っているとは思わない:setObjectValue:fortablecolumn:row:複雑なメニューとサブメナスがあるとき。正しく思い出せば、サブメナスが作用するときにメニュー項目マッピングに「オブジェクト値」が実際にはありません。NSMENUは年を取りすぎて、希望するようにnsindexpathを使用するには古すぎます。およびサブメナス。 (さらに、メニューは動的に大きく変化する傾向があるため、「3」の意味はかなり気まぐれです。)
NSMENUITEMS(またはおそらく親NSMENUSのみ)にターゲットとアクションを設定して、それぞれが選択されたときに信頼できることをします。
他のヒント
アイテム1と2を取得するのと同じコードを使用していますか?私はあなたがそうだと思いますが、時々これらのものが簡単に見落とされる=/