Всплывающая кнопка со статическим изображением (Cocoa OSX)

StackOverflow https://stackoverflow.com/questions/2669242

  •  28-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

Что вы хотите, является регулярным NSButton с подключенным меню. В интерфейсе Builder очистите заголовок, установите квадрат bezel на квадрат, положение для версии только значок центра и изображение NSAddTemplate.

Затем создайте а NSPopUpButton, Установите его на «вытащить», скрыто и выровняйте его / установите его размер на дно NsButton.

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top