Выпадающее меню в NSToolbar, например Mail.app - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужна кнопка на панели инструментов с вложенным выпадающим меню, например кнопка «Флаг» на панели инструментов в Mail.app:

.

Flag menu from Mail.app

Я надеялся, что создание обычного NSMenuItem и добавление меню в качестве menuFormRepresentation поможет, но это меню появляется только тогда, когда кнопка переходит в режим переполнения.

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

Есть ли какая-то хитрость в том, чтобы NSToolbarItem показывал подобный компонент, или эти два пользовательских представления слиплись?

1 Ответ

0 голосов
/ 27 апреля 2018

Здесь нет ничего волшебного в NSToolbar. Это только один из способов настройки NSSegmentedControl, независимо от того, отображается ли он как пользовательский вид панели инструментов или самостоятельно.

Вы не можете настроить это в Интерфейсном Разработчике (раскадровка), но NSSegmentedControl имеет API для назначения меню для сегментов:

segmentControl.setMenu(myMenu, forSegment: 1)
segmentControl.setShowsMenuIndicator(true, forSegment: 1) // for the little arrow

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

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

...