我正在开发一个全新的SwiftUI菜单栏应用程序,并遇到了以下问题:无论何时在SwiftUI中定义Window或WindowGroup,至少会在应用程序启动时打开一个窗口。条件渲染(例如if x { Window() })也不受支持。该应用程序应该有一个入门窗口,仅在用户默认设置下显示。还应该有另一个窗口,可以通过菜单栏项手动打开。
这是我的SwiftUI应用程序类:
Views有.hidden()修饰符,但这不支持Windows或WindowGroups。当我的视图被隐藏,但包装在一个Window或WindowGroup中时,会渲染出一个空窗口。
是否有办法用纯SwiftUI实现这个功能?或者是否需要通过编程方式创建和打开一个NSWindow,如果它不应该默认打开的话?
这是我的SwiftUI应用程序类:
import SwiftUI
@main
struct ExampleApp: App {
@Environment(\.openWindow) var openWindow
@AppStorage("showIntroduction") private var showIntroduction = true
init() {
if showIntroduction {
print("Show introduction")
openWindow(id: "introduction")
}
}
var body: some Scene {
// How to hide this window by default?
Window("Intro", id: "introduction") {
WelcomeView()
}
.windowStyle(.hiddenTitleBar)
Settings {
SettingsView()
}
MenuBarExtra {
MenuBarView()
} label: {
Text("Test")
}
}
}
Views有.hidden()修饰符,但这不支持Windows或WindowGroups。当我的视图被隐藏,但包装在一个Window或WindowGroup中时,会渲染出一个空窗口。
是否有办法用纯SwiftUI实现这个功能?或者是否需要通过编程方式创建和打开一个NSWindow,如果它不应该默认打开的话?
NSApp.setActivationPolicy(.accessory)
。现在没有Dock图标了,但是这仍然不能改变第一个窗口自动打开的行为。在我的应用程序主体中,我有两个Windows
(而不是WindowGroup
)。 - undefined