Swift 为什么我的NSMenuItem在有操作时被禁用?
我正在实现一个定制的Swift 为什么我的NSMenuItem在有操作时被禁用?,swift,appkit,nsmenu,nsmenuitem,nstoolbaritem,Swift,Appkit,Nsmenu,Nsmenuitem,Nstoolbaritem,我正在实现一个定制的NSToolbarItem,它有一个按钮和一个下拉列表,就像邮件一样。但是,唯一不起作用的是NSMenuItem被禁用。无论我做什么,我都无法启用它。知道我做错了什么吗 class DropdownTypeToolbarItem: NSToolbarItem { private var handler: ((NSNumber) -> Void)? init(itemIdentifier: NSToolbarItem.Identifier, handle
NSToolbarItem
,它有一个按钮和一个下拉列表,就像邮件一样。但是,唯一不起作用的是NSMenuItem
被禁用。无论我做什么,我都无法启用它。知道我做错了什么吗
class DropdownTypeToolbarItem: NSToolbarItem {
private var handler: ((NSNumber) -> Void)?
init(itemIdentifier: NSToolbarItem.Identifier, handler: ((NSNumber) -> Void)?) {
super.init(itemIdentifier: itemIdentifier)
self.handler = handler
let control = NSSegmentedControl(labels: ["Open", ""],
trackingMode: .momentary,
target: self,
action: #selector(open))
let menu = NSMenu(title: "")
menu.addItem(withTitle: "Export", action: #selector(export(_:)), keyEquivalent: "")
control.setMenu(menu, forSegment: 1)
control.setShowsMenuIndicator(true, forSegment: 1)
self.view = control
}
@objc func open() {
print("select open")
self.handler?(0)
}
@objc func export(_ sender: Any) {
print("select export")
self.handler?(1)
}
}
NSToolbarItem本身不是响应程序链的一部分,当菜单项的
target
为nil
时,响应程序链用于确定菜单项是否可以启用。在这种情况下,您应该明确地将菜单iem的目标设置为工具栏项。这是否回答了您的问题?可能重复的