我有一个菜单栏应用程序,因此该应用程序从未真正“聚焦”,因此用户可以使用
CMD + ,
快捷键打开应用程序的设置并不是显而易见的。因此,我想添加一个按钮选项,以便他们也可以通过菜单栏打开设置:@main
struct macOSApp: App {
@NSApplicationDelegateAdaptor(AppDelegate.self) var delegate
var body: some Scene {
WindowGroup {
MenuView()
.environmentObject(Authentication())
}
WindowGroup("LoginView") {
LoginView()
.environmentObject(Authentication())
}.handlesExternalEvents(matching: Set(arrayLiteral: "macOSApp://LoginView"))
Settings {
SettingsView()
.environmentObject(Authentication())
}.handlesExternalEvents(matching: Set(arrayLiteral: "macOSApp://SettingsView"))
}
}
我有:
Settings {
SettingsView()
.environmentObject(Authentication())
}.handlesExternalEvents(matching: Set(arrayLiteral: "macOSApp://SettingsView"))
}
对于我的设置页面,如果用户通过 CMD + ,
快捷键打开它,它可以完美运行。我在上面添加了一个 .handlesExternalEvents(matching: Set(arrayLiteral: "macOSApp://SettingsView"))
修饰符,以便在按钮单击时我可以运行:
if let url = URL(string: "UpSend://SettingsView") {
openURL(url)
}
这适用于我的登录界面,但运行时它只是将应用程序的主视图放入自己的窗口中,而不显示“设置”屏幕。
我知道我没有使用WindowGroup
,而是使用Settings
,因此打开窗口可能需要完全不同的方法,我不知道该怎么做?