Доступ к элементам меню из контроллера представления в раскадровке, OS X, swift

Я создаю приложение OS X в Xcode, используя раскадровки. Я обнаружил, что работать с пунктами меню сложно и неинтуитивно. Пункты меню находятся в другой сцене (приложении), чем контроллер представления, и не могут быть подключены к контроллеру представления обычными методами перетаскивания с помощью элемента управления для создания выхода / действия. Мне нужно получить доступ к пунктам меню с главного контроллера представления. Я понял, как связать действия через цепочку первого респондента. Однако я также хотел бы включить / отключить элементы меню из контроллера представления, и я не вижу способа создать выход, чтобы это было возможно.

Я новичок в программировании для OS X. Я чувствую, что мне здесь не хватает чего-то очень простого. Я просмотрел несколько видеороликов WWDC, связанных с раскадровкой, и не видел хорошего примера, показывающего правильный способ работы с меню. Любая помощь будет очень признательна.


person jbaraga    schedule 29.03.2015    source источник


Ответы (1)


Есть несколько способов работы с меню. Традиционный способ какао - добавить метод действия к прокси-серверу First Responder в IB.

Затем конкретизируйте тот же метод действий в подклассе NSResponder, который вам нужен. Заявите это тоже в шапке.

Затем он получит сообщение о действии через Responder Chain.

Прочтите о цепочке респондентов.

person uchuugaka    schedule 29.03.2015
comment
Я подключил действие в цепочке первого респондента. Но я считаю, что мне нужно подключить розетку, чтобы иметь возможность устанавливать свойства элемента меню, такие как включено / отключено с моего контроллера представления. - person jbaraga; 30.03.2015
comment
Это также обычно делается косвенно с помощью NSUserIntefaceValidations developer.apple. com / library / mac / documentation / Cocoa / Conceptual / - person uchuugaka; 30.03.2015
comment
Это означает, что вы реализуете в ответчике метод, который проверяет элемент интерфейса. Если вашего респондента нет, он действует как недействительный. - person uchuugaka; 30.03.2015
comment
Это работает! Большое спасибо. Я нашел руководство по программированию меню по ссылке, которое все объясняет. - person jbaraga; 31.03.2015