Значки NSToolbar выделены серым цветом - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь настроить NSToolbar с пользовательскими NSToolbarItem. Поэтому я удалил все элементы по умолчанию с панели инструментов библиотеки и добавил два NSToolbarItem. Я создал собственный класс PreferencesViewController для контроллера окна, ввел его имя в раскадровку в качестве имени класса и соединил элементы панели инструментов с IBActions в пользовательском классе.

Но когда я запускаю приложение, элементы серого цвета, и я не могу нажать на них. enter image description here

Это код для моего PreferencesWindowController

class PreferencesWindowController: NSWindowController {

    @IBOutlet weak var toolbar: NSToolbar!
    @IBOutlet weak var syncToolbarItem: NSToolbarItem!
    @IBOutlet weak var advancedToolbarItem: NSToolbarItem!


    override func windowDidLoad() {
        super.windowDidLoad()

        // Setup window
        self.window?.styleMask.remove(.resizable)
        self.window?.styleMask.remove(.miniaturizable)
        self.window?.center()

        toolbar.allowsExtensionItems = false
        toolbar.allowsUserCustomization = false
        toolbar.displayMode = .iconAndLabel
        toolbar.selectedItemIdentifier = syncToolbarItem.itemIdentifier
    }


    @IBAction func showSyncViewController(_ sender: Any) {
        print("show sync")
    }


    @IBAction func showAdvancedViewController(_ sender: Any) {
        print("show advanced")
    }
}

Немного больше контекста: я загружаю и показываю окно программно. Поэтому я создал отдельную раскадровку с именем Preferences.storyboard, с контроллером окна, панелью инструментов и контроллером представления. Окно представлено через следующий код:

// Load window
let storyboard = NSStoryboard(name: "Preferences", bundle: nil)
guard let windowCtrl = storyboard.instantiateController(withIdentifier: .init(stringLiteral: "preferencesID")) as? PreferencesWindowController else { return }

// Present window
NSApp.activate(ignoringOtherApps: true)
windowCtrl.window?.makeKeyAndOrderFront(nil)
windowCtrl.window?.delegate = self
...