gpt4 book ai didi

swift - cocoa Mac : creating window from AppDelegate

转载 作者:搜寻专家 更新时间:2023-10-31 22:44:52 26 4
gpt4 key购买 nike

我正在寻找一个从 AppDelegate 创建窗口的简单(且特定于 Mac)示例。我的程序有一个登录页面,该页面可能需要也可能不需要在应用程序启动时显示,具体取决于用户是否已经登录。

到目前为止,我的 AppDelegate 的 applicationDidFinishLaunching 看起来像这样:

func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application

let main = NSStoryboard(name : "Main", bundle: nil).instantiateController(withIdentifier: "MainWindow") as! NSWindowController

main.window?.becomeFirstResponder()

let mainVc = NSStoryboard(name:"Main", bundle: nil).instantiateController(withIdentifier: "MainViewController") as! ViewController
main.window?.contentViewController = mainVc
}

但是当我运行应用程序时,什么也没有发生。我应该注意到我已经取消设置应用程序设置的“主界面”属性。如果我不取消设置,则会出现我想要的两个 版本的窗口,这表明我几乎上面的内容是正确的。

我错过了什么?

最佳答案

您需要在 applicationDidFinishLaunching 方法之外声明 NSWindowController 变量 main。您还需要调用 makeKeyAndOrderFront(nil) 而不是 becomeFirstResponder:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

var main: NSWindowController!

func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application

main = NSStoryboard(name : "Main", bundle: nil).instantiateController(withIdentifier: "MainWindow") as! NSWindowController
let mainVc = NSStoryboard(name:"Main", bundle: nil).instantiateController(withIdentifier: "MainViewController") as! ViewController
main.window?.contentViewController = mainVc
main.window?.makeKeyAndOrderFront(nil)

}
func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
}

关于swift - cocoa Mac : creating window from AppDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39876559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com