Изменение видимости элементов nspopupbutton на основе Keypress
-
25-10-2019 - |
Вопрос
У меня есть приложение, которое нужно прочитать в группе данных из внешнего файла и отобразить его как NSPopUpButton
В пользовательском интерфейсе какао. Здесь улов в том, что данные, которые читаются в нуждающихся, иметь флаг, который утверждает, считается ли он «скрытым» или нет.
Если данные скрыты, их необходимо добавить в NSPopUpButton
как NSMenuItem
, но hidden
Флаг должен быть установлен на YES
так что это обычно не появляется в NSPopUpButton
меню. Если пользователь удерживает «волшебный ключ» на своей клавиатуре (обычно ALT, в данном случае), то эти скрытые объекты должны быть невыполнены. Если пользователь отпускает ключ ALT, то он должен быть автоматически переоценен, за исключением того, что могло быть выбрано, что будет скрыто, если другой NSMenuItem
были выбраны.
У меня как бы чертовски некоторое время, выясняя это, на самом деле.
Мне было интересно, есть ли прямой способ сделать это с помощью NSArrayController
и NSPopUpButton
, но до сих пор я не смог найти что -либо, напоминающее решение, не когда дело доходит до управления скрытым свойством NSMenuItem
объекты.
Кто -нибудь знает, как это можно достичь, используя какао -привязки?
Решение
Вы можете подключить всплывающее окно на контроллер массива и изменить предикат фильтра. С точки зрения дизайна MVC вы не будете использовать атрибут, подобный «скрытую», который является характерным представлением, но, возможно, «продвинутым». Обычно установите предикат фильтра на контроллере массива на «ardanced = no». Затем, когда пользователь удерживает ваш предпочтительный модификатор, удалите предикат. Всплывающее окно будет обновляться автоматически. Контроллер массива должен быть связан с свойством массива на другом объекте (в вашей модели данных). Всплывающее окно должно быть связано с установками на контроллере массива.