Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么我的NSMenuItem在有操作时被禁用?_Swift_Appkit_Nsmenu_Nsmenuitem_Nstoolbaritem - Fatal编程技术网

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的
目标设置为工具栏项。

这是否回答了您的问题?可能重复的