2011-02-02 10 views
4

NSTableViewの1つの列にNSPopUpButtonCellが含まれています。この列はIBOutletに割り当てられています。私のアプリケーションのコントローラクラスは、それにinitのメニューを作成し、NSTableColumnのdataCellに割り当てます。これはNSPopUpButtonCellです。次のようにNSTableViewの階層メニューを持つ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つから項目を選択すると、取得するobjectValueは-1になります。選択されたメニュー項目をどのように取得できますか?

+0

あなたのポップアップボタンはプルダウンモードまたはポップアップモードですか? –

+0

ポップアップモードです。 – nephilim

+0

それから、yah、以下の私の説明。 –

答えて

1

私はtableViewに頼るとは思わない:setObjectValue:forTableColumn:row:複雑なメニューとサブメニューがあるとき。私が正しくリコールすれば、実際にはサブメニューが出現するときにメニュー項目のマッピングに「オブジェクト値」はありません。NSMenuはNSIndexPathを使用するには古すぎ、望みのように複雑すぎず、メニューに整数をマップしようとするほど複雑ではありませんおよびサブメニュー。

NSMenuItems(またはおそらく親NSMenus)にターゲットとアクションを設定すると、それぞれが信頼できるものになるように設定されますが選択される。

0

アイテム1とアイテム2を取得するのと同じコードを使用していますか?私はあなただと思うが、時にはこれらのことが見落とされることがある。/

関連する問題