Почему мой NSMenuItem отключен, когда у него есть действие? - PullRequest
0 голосов
/ 05 февраля 2020

Я реализую пользовательский NSToolbarItem, который имеет кнопку и раскрывающийся список, например Mail. Единственное, что не работает, это то, что 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)
    }
}

1 Ответ

0 голосов
/ 19 февраля 2020

Сам NSToolbarItem не является частью цепочки респондента, что и используется для определения, можно ли включить пункт меню , можно ли , когда target пункта меню равно nil. В этом случае вам просто нужно явно установить target меню iem как элемент панели инструментов.

...