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

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

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

Кнопка всплывающего меню выводит на экран несколько опций и обычно выводит на экран в последний раз выбранную опцию. В то время как ее меню выведено на экран, следующая иллюстрация показывает кнопку всплывающего меню прежде и. (Обратите внимание на то, что «Язык»: не часть кнопки всплывающего меню.)

Pop-up list before and after

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

Выпадающие списки

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

Pull-down list before and after

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

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

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

Обратите внимание на то, что в выпадающем списке, первый элемент сохранен в индексе 1, не индексе 0, как имеет место с раскрывающимися списками или обычными меню. Это сделано так, чтобы заголовок выпадающего списка мог быть сохранен в индексе 0 при необходимости. Даже когда заголовок сохранен в индексе 0, всегда изменяйте заголовок кнопок с setTitle: метод.

Управление элементами кнопки всплывающего меню

Во многих случаях является самым простым заполнить кнопку всплывающего меню с помощью привязки Какао (см., что Привязка Какао Программирует Темы). Вы обычно связываете contentObjects значение кнопки к arrangedObjects из контроллера массива, и contentValues значение кнопки к тому же пути, но добавляющий как заключительный компонент контура ключ атрибута Вы хотите использовать в качестве заголовка кнопки. Для получения дополнительной информации посмотрите Привязку NSPopUpButton.

Можно также изменить кнопку всплывающего меню программно. Для добавления элементов к списку ячейки кнопки всплывающего меню используйте методы addItemWithTitle:, addItemsWithTitles:, и insertItemWithTitle:atIndex:. Эти методы создают или заменяют пункт меню данным заголовком и присваивают его действие по умолчанию и ключевой эквивалент. Как только элемент добавляется к списку, использовать NSMenuItem методы для изменения атрибутов элемента. Для удаления одного или более элементов используйте removeItemWithTitle:, removeItemAtIndex:, или removeAllItems метод.

Действия кнопки всплывающего меню

Существует два способа присвоить метод действия для кнопки всплывающего меню. Можно присвоить действия каждому пункту меню в раскрывающемся. Или можно присвоить действие непосредственно кнопке всплывающего меню, и она вызывается каждый раз, когда пользователь выбирает любой пункт меню, не имеющий его собственного действия. Второй путь особенно полезен с раскрывающимися списками.

Вот демонстрационное действие для всплывающего меню. Это - часть объекта контроллера, устанавливающего названную переменную экземпляра language к постоянному соответствию элементу выбрал пользователь. Вы используете Интерфейсного Разработчика для создания NSPopUpButton возразите, сконфигурируйте его как раскрывающийся список и добавьте элементы к нему — установка тегов пунктов меню для равенства соответствующему значению в enum. Код, который Вы пишете, мог бы быть похожим на это:

typedef enum : NSUInteger
{
    English = 1, French, German, Spanish, Swedish
} LanguageValue;
 
- (void)setLanguageFrom:(id)sender
{
    [self setLanguage:[[sender selectedItem] tag]];
}