我正在开发一款macOS应用程序(使用Swift和Storyboard),其窗口的行为类似于Adobe Creative Cloud应用程序。但是经过多个小时的研究后,我仍然无法找到最优解决方案。
这意味着:
- 当应用程序启动时,主窗口将显示各种菜单项,状态栏中会出现一个图标,而在Dock中也会出现一个图标。
- 当用户单击红色X时,主窗口和Dock中的图标将被隐藏。
- 可以通过单击状态栏图标来重新打开主应用程序窗口,并重新出现Dock图标。
我尝试过以下方法:
通过将“Application is agent (UIElement)”设置为“YES”,我能够关闭主应用程序窗口,同时保持应用程序运行。但是,应用程序图标不会出现在Dock中,状态栏左侧也没有菜单项。
通过单击状态栏图标,我可以启动一个新的应用程序窗口。但是,这样做只会打开一个全新的窗口,而不管当前是否已经显示了一个窗口(我只想显示一个窗口)。
let storyboard = NSStoryboard(name: "Main", bundle: nil)
guard let window = storyboard.instantiateController(withIdentifier: .init(stringLiteral: "main")) as? WindowController else { return }
window.showWindow(self)
非常感谢能够提供帮助的人!
NSStatusItem
停用和启用应用程序,包括隐藏/显示 Dock 图标,而您建议的重复问题是关于标准关闭和打开窗口的情况。 - Ely