我正在构建一个 macOS 菜单栏应用程序(构建目标是 macOS 14.0),并且需要一个设置窗口作为其中的一部分。当我在此窗口中使用
TabView
时,我遇到了渲染问题,即使相同的语法在常规应用程序中运行良好。
我将窗口定义为我的
@main
块中的独立视图,如下所示:
struct xyzApp: App {
MenuBarExtra {
MenubarView()
} label: {
Label("XYZ", image: "xyz")
}
.menuBarExtraStyle(.window)
Window("Settings", id: "settings-window") {
SettingsView()
}.windowResizability(.contentSize)
}
“设置”视图如下所示:
var body: some View {
TabView {
Form {
}.tabItem { Label("Tab1",systemImage: "gear") }
Form {
}.tabItem { Label("Tab2",systemImage: "gear") }
}
}
}
但是
TabView
未正确渲染,没有图像且尺寸错误
我在常规应用程序上测试了相同的代码,并在
Settings()
块中使用 @main
声明,并且工作正常。关于我做错了什么的任何观点都会非常有帮助。
好的,明白了。原来macos只支持设置窗口上的TabView!我通过使用 SettingsLink 在我的 @main 块中定义它后打开“设置”窗口来解决这个问题
Settings { SettingsView() }
这是一个非常令人恼火的限制,希望它在未来的版本中得到修复。
SettingsLink 上有一个很好的讨论这里