如何在Xcode工具栏中使用类似菜单的方式进行分段控件
我想在我的OSX应用程序中添加一个带有Xcode工具栏菜单的分段控件。它将在三个屏幕之间切换,并且还需要在每个屏幕中以菜单的形式提供一些选项如何在Xcode工具栏中使用类似菜单的方式进行分段控件,xcode,macos,cocoa,nssegmentedcontrol,segmentedcontrol,Xcode,Macos,Cocoa,Nssegmentedcontrol,Segmentedcontrol,我想在我的OSX应用程序中添加一个带有Xcode工具栏菜单的分段控件。它将在三个屏幕之间切换,并且还需要在每个屏幕中以菜单的形式提供一些选项 当我添加菜单时,标准分段控件不允许“选择一个”模式 我很容易就完成了你想要的东西 我将分段控件的trackingMode设置为nssegmentswitchtrackinginstantial 然后我为分段控件创建了一个iAction: - (IBAction)selectionChanged:(NSSegmentedControl *)sender {
当我添加菜单时,标准分段控件不允许“选择一个”模式 我很容易就完成了你想要的东西 我将分段控件的
trackingMode
设置为nssegmentswitchtrackinginstantial
然后我为分段控件创建了一个iAction:
- (IBAction)selectionChanged:(NSSegmentedControl *)sender {
[NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:[NSApp currentEvent] forView:sender];
}
然后它看起来如下所示:
此功能是内置的。在代码中,您只需使用
-setMenu:forSegment:
方法NSSegmentedControl
(或NSSegmentedCell
)。在Interface Builder中,只需从对象库中拖动一个菜单并将其放置在相应的段上
要允许在单击时选择带有菜单的段,您可能需要使用
NSSegmentedControl
的自定义子类,该子类将覆盖-startTrackingAt:inView:
以在调用super之前将段设置为selected。这是解决问题的最简单的方法。如果你想在那里做任何更特别的事情,你必须对分段控件进行子类化,然后从那里开始工作。看起来我无论如何都应该滚动我自己的子类来实现这种行为,用标准控件无法实现所需的行为。。。