如何使用 Xcode 工具栏中的菜单进行分段控制
How to make segmented control with menu like in the Xcode toolbar
我想在我的 OS X 应用程序中添加一个带有菜单的分段控件,例如 Xcode 工具栏中的菜单。它会在三个屏幕之间切换,并且还需要在每个屏幕中以菜单的形式提供一些选项。
当我向其添加菜单时,标准分段控件不允许 "Select one" 模式。
我能够很轻松地完成您想要的东西。
我把分段控件的trackingMode
设置为NSSegmentSwitchTrackingMomentary
然后我为分段控件创建了一个 IBAction:
- (IBAction)selectionChanged:(NSSegmentedControl *)sender {
[NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:[NSApp currentEvent] forView:sender];
}
然后看起来像下面这样:
此功能是内置的。在代码中,您可以只使用NSSegmentedControl
(或NSSegmentedCell
)的-setMenu:forSegment:
方法。在 Interface Builder 中,只需从对象库中拖动一个菜单并将其放在适当的段上。
要允许在单击时选择带有菜单的细分,您可能需要使用 NSSegmentedControl
的自定义子类,它覆盖 -startTrackingAt:inView:
以在调用之前将细分设置为选中超级.
我想在我的 OS X 应用程序中添加一个带有菜单的分段控件,例如 Xcode 工具栏中的菜单。它会在三个屏幕之间切换,并且还需要在每个屏幕中以菜单的形式提供一些选项。
当我向其添加菜单时,标准分段控件不允许 "Select one" 模式。
我能够很轻松地完成您想要的东西。
我把分段控件的trackingMode
设置为NSSegmentSwitchTrackingMomentary
然后我为分段控件创建了一个 IBAction:
- (IBAction)selectionChanged:(NSSegmentedControl *)sender {
[NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:[NSApp currentEvent] forView:sender];
}
然后看起来像下面这样:
此功能是内置的。在代码中,您可以只使用NSSegmentedControl
(或NSSegmentedCell
)的-setMenu:forSegment:
方法。在 Interface Builder 中,只需从对象库中拖动一个菜单并将其放在适当的段上。
要允许在单击时选择带有菜单的细分,您可能需要使用 NSSegmentedControl
的自定义子类,它覆盖 -startTrackingAt:inView:
以在调用之前将细分设置为选中超级.