NSPopUpButton на панели инструментов с фиксированным изображением, аналогичным пользовательскому интерфейсу Pages.app.

На панели инструментов Pages (Numbers, Keynote) есть кнопка NSPopUpButton с фиксированным изображением (независимо от того, какое меню выбрано). Используя отладку представления, оказывается, что это стандартный NSPopUpButton с фиксированным изображением.

Согласно документам NSPopUpButton относительно setImage:,

Этот метод не работает. Изображение, отображаемое в ячейке всплывающей кнопки, берется из выбранного пункта меню (в случае всплывающего меню) или из первого пункта меню (в случае выпадающее меню).

Это означает, что этот стандартный NSPopUpButton имеет нестандартное поведение.

Как это можно было реализовать? Поскольку setImage: не имеет никакого эффекта, подкласс NSPopUpButtonCell и переопределение -drawImage:withFrame:inView: не имеет никакого эффекта (потому что он никогда не вызывается).

NSPopUpButton на панели инструментов


person Daniel Farrell    schedule 15.05.2015    source источник
comment
Мне удалось установить кнопку всплывающего окна с Pop up на Pull down, что, например, является просто еще одним режимом работы, установленным в IB. Но моя кнопка находится в окне, не знаю, показывает ли панель инструментов другое поведение   -  person Volker    schedule 15.05.2015
comment
Вы хотите сказать, что изображение вашей всплывающей кнопки статично? Я не уверен, как это возможно, поскольку это противоречит документации. Я знаю, что для получения раскрывающегося списка вам просто нужно установить Pull down.   -  person Daniel Farrell    schedule 15.05.2015
comment
Тогда изображение будет статичным ... по крайней мере, для меня. Я полностью настроил его в IB, назначил изображение, установил раскрывающееся меню, и тогда он работает для меня.   -  person Volker    schedule 15.05.2015
comment
Вы тоже добавляете меню в ИБ или оно загружается программно? Это интересно, потому что я нахожу совсем другое поведение.   -  person Daniel Farrell    schedule 15.05.2015
comment
Тот же вопрос здесь, stackoverflow.com/questions/2669242/   -  person Daniel Farrell    schedule 15.05.2015
comment
В моем случае кнопка NSPopUp полностью настроена в IB, как и изображение, и меню. Я не буду трогать это позже в коде.   -  person Volker    schedule 15.05.2015
comment
Вот что я вижу: github.com/danieljfarrell/Toolbar-with- Раскрывающееся меню. Изображение, назначенное всплывающей кнопке, прикреплено к первому пункту меню ?! Любые идеи?   -  person Daniel Farrell    schedule 15.05.2015
comment
Также актуально stackoverflow.com/questions/23101528/   -  person Daniel Farrell    schedule 15.05.2015


Ответы (1)


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

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

@Volker абсолютно прав. Это встроенное поведение, но вы устанавливаете изображение, устанавливая первый элемент в меню без использования setImage: или setTitle:.

Например, https://github.com/danieljfarrell/Toolbar-with-Pull-Down-Menu

Снимок экрана

person Daniel Farrell    schedule 15.05.2015