質問

を持っています NSTableView 1つの列が含まれています NSPopUpButtonCells。この列は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を取得するのと同じコードを使用していますか?私はあなたがそうだと思いますが、時々これらのものが簡単に見落とされる=/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top