2015-09-26 1 views
2

Я хотел бы добавить сегментированный элемент управления с помощью меню, например, в панели инструментов Xcode, в мое приложение OS X. Он будет переключаться между тремя экранами, а также должен иметь некоторые опции на каждом экране в виде меню. picture of what I need to implementКак сделать сегментированный контроль с помощью меню, как на панели инструментов Xcode

Стандартное сегментированное управление не позволяет «выбрать один» режим, когда я добавляю в него меню.

ответ

1

Эта функциональность встроена. В коде вы можете просто использовать -setMenu:forSegment: от NSSegmentedControl (или NSSegmentedCell). В Interface Builder просто перетащите меню из библиотеки объектов и опустите его в соответствующий сегмент.

Чтобы разрешить выбор сегмента с меню при щелчке, вам может потребоваться использовать пользовательский подкласс NSSegmentedControl, который переопределяет -startTrackingAt:inView:, чтобы установить сегмент, выбранный до вызова супер.

+0

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

0

Я был в состоянии выполнить то, что вы искали довольно легко.

Я установил trackingMode сегментированной управления для NSSegmentSwitchTrackingMomentary

Затем я создал IBAction для сегментированного управления:

- (IBAction)selectionChanged:(NSSegmentedControl *)sender { 
    [NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:[NSApp currentEvent] forView:sender]; 
} 

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

enter image description here

+0

Это наиболее простое решение проблемы. Если вы хотите сделать что-то более специальное, вам нужно подклассифицировать сегментированный элемент управления и работать оттуда. – mangerlahn

Смежные вопросы