Всплывающая кнопка со статическим изображением (Cocoa OSX) - PullRequest
2 голосов
/ 19 апреля 2010

Я пытаюсь создать всплывающую кнопку, которая всегда отображает + как его изображение, и когда вы нажимаете на нее, появляется контекстное меню, которое позволит вам решить, какой тип объекта вы хотите добавить. Есть ли способ сделать это с помощью кнопки NSPopupButton? Я видел в спецификациях для NSPopupButotn, что метод SetImage не имеет никакого эффекта, поэтому кажется, что это, вероятно, не будет работать с использованием этого класса. Это правильно?

Ответы [ 4 ]

8 голосов
/ 20 апреля 2010

Почему бы просто не использовать кнопку NSPopupButton? Использование двух кнопок для выполнения одной задачи кажется неправильным, а также, как уже упоминалось, в отношении удержания кнопки она ведет себя не так, как обычно.

Чтобы заставить всплывающую кнопку работать так, как вам нравится ... установите ее в раскрывающемся списке. Не давайте самой всплывающей кнопке никакого имени или изображения. Если у всплывающей кнопки нет имени или изображения, тогда первый пункт меню становится названием кнопки. Пункты меню могут иметь изображения, поэтому не присваивайте первому пункту меню заголовок, просто установите его изображение, и это изображение вы увидите во всплывающей кнопке. Для остальных пунктов меню просто добавьте их как обычно после первого пункта меню. Обратите внимание, что если вы программно изменяете пункты меню в коде, просто оставьте первый пункт меню в порядке, и все будет в порядке. Я делаю это в нескольких своих приложениях без проблем.

4 голосов
/ 24 февраля 2012

Ключ должен использовать NSPopUpButtonCell's setUsesItemFromMenu :. Документы Apple содержат пример того, как это использовать.

0 голосов
/ 16 июня 2017

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

Если вы еще не ясны, то просмотрите следующее видео один раз, оно наверняка поможет вам понять.

В этом руководстве показано, как создать элемент панели инструментов (NSToolbarItem) с раскрывающимся меню для NSToolbar в Interface Builder: Ссылка

0 голосов
/ 19 апреля 2010

Да, видимый вид NSPopUpButton не подходит для того, что вы хотите.

То, что вы хотите, это обычный NSButton с приложенным меню. В Интерфейсном Разработчике очистите заголовок, установите Рамку на Квадрат, Положение на центральную версию только для значка и изображение на NSAddTemplate.

Затем создайте NSPopUpButton, установите его на «Pull Down», скрытый, и выровняйте его / установите его размер в нижней части NSButton.

Наконец, подключите performClick: в NSButton к performClick: на NSPopUpButton.

Это не будет обрабатывать нажатие кнопки на кнопке; для этого вам нужно написать некоторый код для использования (без рисунка) NSPopUpButtonCell.

...