You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何预览macOS SwiftUI应用的工具栏?

macOS SwiftUI工具栏预览解决方案

要在Xcode预览中显示macOS SwiftUI应用的工具栏,核心是让预览的视图层级和实际运行的代码结构完全匹配,同时正确关联窗口环境,以下是具体解决方法:

  • 用WindowGroup包裹预览内容:macOS的工具栏属于窗口级元素,直接在预览中用WindowGroup包裹你的主视图,能让预览环境正确识别并渲染工具栏。
  • 完整复现实际视图结构:如果你的工具栏是附加在NavigationSplitView或NavigationStack内部的视图上,预览里必须完整还原这个嵌套结构,不能单独抽取Toolbar部分。
  • 显式设置窗口样式(可选):如果预览仍不显示工具栏,可添加.windowStyle(.titleBar)修饰符,确保标题栏和工具栏区域被正确渲染。

示例代码

// 实际应用的主视图
struct MainContentView: View {
    var body: some View {
        NavigationSplitView {
            SidebarView()
        } detail: {
            DetailView()
                .toolbar {
                    Button("新建") {}
                    Button("导出") {}
                    Toggle("编辑模式", isOn: .constant(false))
                }
        }
    }
}

// 预览提供者
struct MainContentView_Previews: PreviewProvider {
    static var previews: some View {
        // 关键:用WindowGroup包裹主视图
        WindowGroup {
            MainContentView()
        }
        .previewDevice(PreviewDevice(rawValue: "Mac"))
        .windowStyle(.titleBar) // 确保标题栏区域渲染
    }
}

// 辅助视图示例
struct SidebarView: View {
    var body: some View {
        List(["文档1", "文档2"], id: \.self) { item in
            Text(item)
        }
    }
}

struct DetailView: View {
    var body: some View {
        Text("文档内容预览")
            .navigationTitle("文档详情")
    }
}

额外注意事项

  • 若预览仍不生效,尝试点击预览窗口右上角的刷新按钮,或重启Xcode的预览服务。
  • 确保你的工具栏修饰符是附加在有导航环境的视图上(比如NavigationStack/NavigationSplitView的子视图),或者直接附加在WindowGroup的根视图上。

内容的提问来源于stack exchange,提问作者Rick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:55:15