Window SwiftUI 应用程序中的新 Window 缺少控制按钮
Window Control Buttons Missing from New Window in SwiftUI App
从 Xcode 中的新 SwiftUI macOS 项目开始,我设置了一些非常基本的功能。
@main
struct SwiftUIWindowTestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
//ContentView
struct ContentView: View {
var body: some View {
//Button to open a new window
Button("Open Preferences"){
openPreferences()
}
.padding(100)
}
//Open the new window
func openPreferences(){
let preferencesWindow = NSWindow()
preferencesWindow.contentView = NSHostingView(rootView: PreferencesView())
let controller = NSWindowController(window: preferencesWindow)
controller.showWindow(nil)
}
}
//PreferencesView
struct PreferencesView: View {
var body: some View {
Text("Preferences")
.frame(width:300, height:200)
}
}
在应用启动时,我看到了我所期望的:
但是在我点击 打开首选项 之后,我看到一个新的 window 如下所示:
为什么该弹出窗口中缺少控制按钮(关闭、最小化、缩放)window?
我已经尝试将按钮明确设置为可见(即使默认情况下它们应该是可见的)但没有任何变化:
preferencesWindow.standardWindowButton(.closeButton)?.isHidden = false
preferencesWindow.standardWindowButton(.miniaturizeButton)?.isHidden = false
preferencesWindow.standardWindowButton(.zoomButton)?.isHidden = false
我在 AppKit 应用程序中使用了相同的示例,但它在 SwiftUI 中似乎有些奇怪。有什么想法吗?
看起来 NSWindow
会创建一个类似的 window,除非您在其上设置托管控制器。你的代码的这个修改版本对我有用:
func openPreferences(){
let preferencesWindow = NSWindow(contentViewController: NSHostingController(rootView: PreferencesView()))
let controller = NSWindowController(window: preferencesWindow)
controller.showWindow(nil)
}
从 Xcode 中的新 SwiftUI macOS 项目开始,我设置了一些非常基本的功能。
@main
struct SwiftUIWindowTestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
//ContentView
struct ContentView: View {
var body: some View {
//Button to open a new window
Button("Open Preferences"){
openPreferences()
}
.padding(100)
}
//Open the new window
func openPreferences(){
let preferencesWindow = NSWindow()
preferencesWindow.contentView = NSHostingView(rootView: PreferencesView())
let controller = NSWindowController(window: preferencesWindow)
controller.showWindow(nil)
}
}
//PreferencesView
struct PreferencesView: View {
var body: some View {
Text("Preferences")
.frame(width:300, height:200)
}
}
在应用启动时,我看到了我所期望的:
但是在我点击 打开首选项 之后,我看到一个新的 window 如下所示:
我已经尝试将按钮明确设置为可见(即使默认情况下它们应该是可见的)但没有任何变化:
preferencesWindow.standardWindowButton(.closeButton)?.isHidden = false
preferencesWindow.standardWindowButton(.miniaturizeButton)?.isHidden = false
preferencesWindow.standardWindowButton(.zoomButton)?.isHidden = false
我在 AppKit 应用程序中使用了相同的示例,但它在 SwiftUI 中似乎有些奇怪。有什么想法吗?
看起来 NSWindow
会创建一个类似的 window,除非您在其上设置托管控制器。你的代码的这个修改版本对我有用:
func openPreferences(){
let preferencesWindow = NSWindow(contentViewController: NSHostingController(rootView: PreferencesView()))
let controller = NSWindowController(window: preferencesWindow)
controller.showWindow(nil)
}