如何在Xcode工具栏中制作带有菜单的分段控件

4
我想在我的OS X应用程序中添加一个带有菜单的分段控件,就像Xcode工具栏中的一样。它将在三个屏幕之间切换,并且每个屏幕还需要一些选项作为菜单。需要实现的图片 标准分段控件不允许在添加菜单时使用“选择一个”模式。
2个回答

4

这个功能是内置的。在代码中,你可以直接使用NSSegmentedControl(或NSSegmentedCell)的-setMenu:forSegment:方法。在Interface Builder中,只需从Object库中拖动菜单并将其放在适当的段上。

为了允许具有菜单的段在被单击时被选中,您可能需要使用NSSegmentedControl的自定义子类,它重写-startTrackingAt:inView:以在调用super之前将段设置为选定状态。


看起来我应该自己编写子类来实现那种行为,用标准控件无法实现所需的行为... - Alexander B

1
我能很容易地完成你所需要的任务。
我将分段控件的trackingMode设置为NSSegmentSwitchTrackingMomentary
然后我为分段控件创建了一个IBAction:
- (IBAction)selectionChanged:(NSSegmentedControl *)sender {
    [NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:[NSApp currentEvent] forView:sender];
}

然后它看起来像下面这样:

enter image description here


这是解决您的问题最简单的方法。如果您想要做更特殊的事情,那么您需要子类化该分段控件并从那里开始工作。 - mangerlahn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接