Изменение видимости элементов NSPopUpButton на основе нажатия клавиш - PullRequest
4 голосов
/ 29 ноября 2011

У меня есть приложение, которое должно считывать данные из внешнего файла и отображать их как NSPopUpButton в пользовательском интерфейсе Какао. Подвох в том, что данные, которые читаются, должны иметь флаг, указывающий, считается ли он «скрытым» или нет.

Если данные скрыты, их необходимо добавить к NSPopUpButton как NSMenuItem, но для флага hidden необходимо установить YES, поэтому он обычно не появляется в NSPopUpButton меню. Если пользователь удерживает «волшебную клавишу» на своей клавиатуре (обычно в этом случае ALT), то эти скрытые объекты должны быть скрыты. Если пользователь отпускает клавишу ALT, его необходимо автоматически повторно скрыть, за исключением того, который, возможно, был выбран - который станет скрытым, если будет выбран другой NSMenuItem.

Вообще-то, у меня чертовски много времени, чтобы понять это.

Мне было интересно, есть ли прямой способ сделать это, используя NSArrayController и NSPopUpButton, но до сих пор я не смог найти ничего похожего на решение - не в том, что касается управления скрытым свойство NSMenuItem объектов.

Кто-нибудь знает, как этого можно добиться, используя привязки какао?

1 Ответ

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

Вы можете подключить всплывающее окно к контроллеру массива и изменить предикат фильтра.С точки зрения дизайна MVC вы бы не использовали атрибут типа «скрытый», который является характеристикой представления, но, возможно, «расширенный».Обычно, установите предикат фильтра на контроллере массива на «advanced = no».Затем, когда пользователь удерживает предпочитаемый вами модификатор, удалите предикат.Всплывающее окно обновится автоматически.Контроллер массива должен быть привязан к свойству массива другого объекта (в вашей модели данных).Всплывающее окно должно быть связано с упорядоченными объектами на контроллере массива.

...