我正在制作一个应用程序,请求它检查UserDefaults中是否存在值。如果没有,它将打开一个窗口,要求用户选择将数据库放置在何处并将路径保存在UserDefaults中。如果已经听到路径,则打开主窗口。
为此,我有两个情节提要板,“主”提要包含主窗口的所有控制器,“欢迎”情节提要包含欢迎屏幕。
我的主窗口包含一个带有项目的NSToolbar。问题是,如果我将主窗口控制器用作初始控制器,则工具栏可以正常工作,但从不会调用“欢迎”屏幕。因此,我删除了“是初始控制器”选项,但是如果检查appDelegate中applicationDidFinishLaunching中的条件,则当我从此处实例化窗口时(一切正常,在正确条件下打开了正确的窗口),工具栏将永远无法工作(按钮的操作从未调用,我检查了打印件)。
这是我在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)
}
}
实例化主窗口控制器时是否缺少某些内容?