NSPopUpButtonCell с иерархическим меню в NSTableView - PullRequest
4 голосов
/ 02 февраля 2011

У меня есть NSTableView, из которых один столбец содержит NSPopUpButtonCell с. Этот столбец присваивается IBOutlet. Класс контроллера моего приложения создает меню в init и назначает его для dataCell 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. Как мне получить выбранный пункт меню?

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Не думаю, что я бы полагался на -tableView: setObjectValue: forTableColumn: row: когда у вас есть сложный набор меню и подменю;если я правильно помню, на самом деле не существует «значения объекта» для отображения элементов меню, когда подменю вступают в игру - NSMenu слишком стар, чтобы использовать NSIndexPath, как вы можете надеяться, и не достаточно сложен, чтобы пытаться отобразить целые числа в менюи подменю.(Кроме того, меню имеют тенденцию к динамическому изменению, поэтому значение «3» будет довольно сложным.)

Установите цель и действие для ваших NSMenuItems (или, возможно, только для родительского NSMenus), чтобы сделать что-то надежноекогда каждый выбран.

0 голосов
/ 20 февраля 2011

Используете ли вы тот же код, что и для получения элементов 1 и 2? Я полагаю, что вы, но иногда эти вещи легко пропустить = /

...