Я делаю приложение, в начале которого проверяется, существует ли значение в 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)
}
}
Есть ли что-то, чего мне не хватает при создании экземпляра контроллера главного окна?