Я пытаюсь настроить NSToolbar
с пользовательскими NSToolbarItem
. Поэтому я удалил все элементы по умолчанию с панели инструментов библиотеки и добавил два NSToolbarItem
. Я создал собственный класс PreferencesViewController
для контроллера окна, ввел его имя в раскадровку в качестве имени класса и соединил элементы панели инструментов с IBActions
в пользовательском классе.
Но когда я запускаю приложение, элементы серого цвета, и я не могу нажать на них.
Это код для моего 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