Как сделать сегментированное управление с помощью меню, как на панели инструментов 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];
}

Тогда это выглядит следующим образом:

Другие вопросы по тегам