Как работают меню

Классы NSMenu и NSMenuItem основание для всех типов меню. Экземпляр NSMenu управляет набором пунктов меню и рисует их один ниже другого. Экземпляр NSMenuItem представляет пункт меню; это инкапсулирует всю информацию NSMenu возразите должен нарисовать и управлять им, но не делает никакого получения или самой обработки событий. Обычно Вы используете Интерфейсного Разработчика, чтобы создать и изменить любой тип меню. Однако NSMenu и NSMenuItem предоставьте Вам методы для изменения меню приложения динамично.

Основы меню

Какао дает Вам базовый набор классов, обрабатывающих меню независимо от того, где они появляются. Меню обычно появляются в различных частях пользовательского интерфейса:

Классы NSMenu и NSMenuItem основание для всех типов меню. Экземпляр NSMenu управляет набором пунктов меню и рисует их один ниже другого. Экземпляр NSMenuItem представляет пункт меню; это инкапсулирует всю информацию NSMenu возразите должен нарисовать и управлять им, но не делает никакого получения или самой обработки событий.

Представления меню способны к присоединению того представление меню в любой момент времени. Присоединенное представление меню выводит на экран содержание подменю и обычно располагается рядом с пунктом меню, с которым оно связано.

NSMenuItem позволяет Вам установить заголовки, действия, цели, теги, изображения, включили состояния и подобные атрибуты отдельных пунктов меню, а также получить текущую стоимость этих атрибутов. Каждый раз, когда атрибут для пункта меню изменяется, он уведомляет свое связанное NSMenu с itemChanged: метод.

Вы обычно используете Интерфейсного Разработчика, чтобы создать и изменить любой тип меню, так часто нет никакой потребности записать любой код. Однако NSMenu и NSMenuItem предоставьте Вам методы, чтобы изменить меню Вашего приложения динамично, в частности позволить Вам включать и отключать существующие пункты меню (см. Пункты меню Включения).

Меню приложения

Все меню приложения в строке меню принадлежат одной NSMenu экземпляр это создается приложением, когда это запускает. Можно получить это главное меню с NSApplication метод mainMenu.

Меню приложения, выпадающие от строки меню, когда пользовательские щелчки в заголовке меню и подменю появляются вправо или оставленный их меню, в зависимости от доступного экранного пространства.

Кнопки всплывающего меню и выпадающие списки

Кнопки всплывающего меню реализованы NSPopUpButton класс. Можно выбрать из раскрывающегося списка или выпадающего списка, с setPullsDown: метод:

NSPopUpButton объект содержит NSPopUpButtonCell объект. Кнопка содержит данные кнопки, и ячейка управляет появлением кнопки. Обычно Вы вызовете методы на NSPopUpButton объект, несмотря на то, что большая часть работы обрабатывается NSPopUpButtonCell экземпляр. Большая часть NSPopUpButtonметоды являются удобными методами, просто вызывающими тот же метод на ячейку.

Для реализации его меню ячейка кнопки содержит NSMenu объект, поочередно содержащий несколько NSMenuItem объекты, один для каждого элемента в меню. Избегите вызывать методы на NSMenu возразите непосредственно, но вместо этого вызовите методы на NSPopUpButton экземпляр, который, возможно, должен сделать некоторое обслуживание прежде, чем вызвать надлежащие методы на меню. Однако можно получить меню с NSPopUpButton метод menu. NSPopUpButton методы, которые Вы используете чаще всего, являются методами, говорящими Вам, какой элемент выбран.

Обычно Вы создаете NSPopUpButton объект с Интерфейсным Разработчиком. Можно определить NSPopUpButton цель и действие объекта, а также цели и действия каждого элемента в списке кнопки, программно или через Интерфейсного Разработчика.

Контекстные меню

Можно присоединить контекстное меню к любому NSView объект. Когда щелчки контроля за работой пользователей по тому представлению, появляется меню. Для присвоения меню представлению использовать setMenu:, который NSView наследовался от NSResponder.

Ваш подкласс может определить меню, которое это используется для всех экземпляров путем реализации defaultMenu метод класса. Для изменения меню, выведенного на экран на основе события от нажатия мыши, переопределите menuForEvent: метод экземпляра. Это позволяет представление, по которому щелкают, чтобы вывести на экран различные меню на основе расположения мыши и состояния представления, или изменить или включить отдельные пункты меню на основе команд, доступных для представления или для той области представления.