Как проверить пункты меню, динамически заполняемые через привязки какао - PullRequest
2 голосов
/ 10 ноября 2011

Контекст
Я заполняю меню TableView NSPopupMenuCell через привязки какао. Все хорошо (я связал «Содержимое», «Значения содержимого» и «Выбранные объекты»). Меню корректно заполняется во время выполнения, и соответствующая переменная устанавливается правильно (через KVC). На этом все работает.

Моя проблема
Далее я хотел бы контролировать состояние заполненных пунктов меню (поскольку некоторые из них должны быть отключены). Теперь я очень внимательно прочитал документацию Apple по Включение пунктов меню ... но, судя по всему, я не могу реализовать validateMenuItem: или validateUserInterfaceItem: там, где их на самом деле вызовут.

Я пытался, среди прочего, реализовать эти методы в уже существующем делегате приложения, но без радости. Возможно, я что-то неправильно понимаю в цепочке Первого ответчика?

Кроме того, по логике, другая возможность состоит в том, что пункты меню на самом деле do имеют цели (вышеизложенное предполагает, что они не имеют). Но, опять же, я не могу определить их цели (чтобы я мог применить validateMenuItem: там).

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Целью динамически (через привязки), созданной NSMenuItem в NSPopupMenuCell, оказывается сам NSPopupMenuCell (так что вы можете создать его подкласс и реализовать validateMenuItem: там).

Я полагаю, это потому, что NSPopupMenuCell нужно будет выполнять вызовы KVC (т.е. setValue:forKey:).

0 голосов
/ 10 ноября 2011

Если вы используете привязки для подготовки содержимого, вы также можете привязать каждое свойство NSMenuItem enabled к логическому значению в модели, выражающему, должно ли оно быть включено.

...