gpt4 book ai didi

swift - 在 macOS 的状态栏应用程序上创建一个窗口

转载 作者:行者123 更新时间:2023-12-04 10:32:39 28 4
gpt4 key购买 nike

警告:macOS 开发初学者在这里。

我有一个菜单栏应用程序(没有停靠栏)。该应用程序的大部分功能都在菜单中(并且实现在 AppDelegate 中),但我需要一个单独的窗口,一旦我单击其中一个菜单项,就会打开该窗口。

我想使用 SwiftUI、Swift 5、Xcode 11.3。

我还没有找到合适的方法来做到这一点。需要创建哪些文件和类似文件?如何以编程方式打开此窗口?

@objc func openPreferences() {
// open a new window here...
}

最佳答案

您必须以编程方式创建一个窗口。我附上了我的一个应用程序的示例代码:

private var windowController: NSWindowController?

fileprivate func createWindow()
{
let storyboard = NSStoryboard(name: "Main", bundle: nil)

self.windowController = storyboard.instantiateInitialController() as? NSWindowController

// This is example code to show how to customize the hosted view controller. You can pass additional arguments here (may an important global variables that is declared in the AppDelegate).
if let contentController = windowController?.contentViewController as? MyWindowViewController
{
// Do some assignments here
// contentController.variable = ....
// self.windowViewController = contentController // Maybe save for later use.
}
}

@objc fileprivate func open()
{
if self.windowViewController == nil
{
self.createWindow()
}

self.windowController?.showWindow(self)

NSApp.activate(ignoringOtherApps: true) // Bring window to front.
}

我已将 open() 函数链接到按钮调用(因此是 @objc 关键字)。我认为您已经这样做了,所以我的 open() 函数将是您的 openPreferences功能。

关于swift - 在 macOS 的状态栏应用程序上创建一个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60336992/

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