Проблема с NSToolbar, когда окно открывается программно - PullRequest
0 голосов
/ 15 октября 2018

Я делаю приложение, в начале которого проверяется, существует ли значение в UserDefaults.Если нет, то открывается окно, в котором пользователю предлагается выбрать, куда поместить базу данных, и сохранить путь в UserDefaults.Если путь уже слышен, то открывается главное окно.

Для этого у меня есть две раскадровки: основная, содержащая все контроллеры для главного окна, и раскадровка приветствия, содержащая экран приветствия.

Мое главное окно содержит NSToolbar с элементами.проблема в том, что если я установлю свой контроллер основного окна в качестве начального контроллера, панель инструментов будет работать нормально, но экран приветствия никогда не будет вызываться.Поэтому я удалил опции «is initial controller», но если проверить условия в applicationDidFinishLaunching в appDelegate, когда я создаю окно отсюда (и все работает, правильное окно открыто для правильного условия), панель инструментов никогда не работает(действия для кнопок никогда не вызываются, я проверял с отпечатками).

Вот мой код в appDelegate:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    let userDefaults = UserDefaults.standard

    if userDefaults.string(forKey: "Database Path") == nil {
        let storyboard = NSStoryboard(name: "Welcome", bundle: nil)
        let initiate = storyboard.instantiateController(withIdentifier: "Welcome") as! WelcomeWindowController
        initiate.window?.makeKeyAndOrderFront(self)
    } else {
        let storyboard = NSStoryboard(name: "Main", bundle: nil)
        let initiate = storyboard.instantiateController(withIdentifier: "Main") as! MainWindowController
        initiate.window?.makeKeyAndOrderFront(self)

    }

}

Есть ли что-то, чего мне не хватает при создании экземпляра контроллера главного окна?

...