Как сделать сегментированное управление с помощью меню, как на панели инструментов Xcode
Я хотел бы добавить сегментированный элемент управления с меню, как на панели инструментов Xcode, в мое приложение OS X. Он будет переключаться между тремя экранами, а также должен иметь несколько параметров на каждом экране в виде меню.
Стандартный сегментный элемент управления не позволяет режиму "Выбрать один", когда я добавляю в него меню.
2 ответа
Эта функциональность встроена. В коде вы можете просто использовать -setMenu:forSegment:
метод NSSegmentedControl
(или же NSSegmentedCell
). В Интерфейсном Разработчике просто перетащите меню из библиотеки объектов и поместите его в соответствующий сегмент.
Чтобы разрешить выбор сегмента с меню при нажатии, вам может потребоваться использовать собственный подкласс NSSegmentedControl
который переопределяет -startTrackingAt:inView:
установить сегмент на выбранный, прежде чем звонить на супер.
Я смог выполнить то, что вы искали, довольно легко.
Я установил trackingMode
сегментированного управления в NSSegmentSwitchTrackingMomentary
Затем я создал IBAction для сегментированного элемента управления:
- (IBAction)selectionChanged:(NSSegmentedControl *)sender {
[NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:[NSApp currentEvent] forView:sender];
}
Тогда это выглядит следующим образом: