繁体   English   中英

SwiftUI TabView 不呈现预览标签

[英]SwiftUI TabView not rendering Preview Labels

我正在为 macOS 开发一个 SwiftUI 应用程序。

但是,在预览 Canvas 以及在新的 Window 上使用视图时,我无法使TabView正确呈现。

struct DevView: View {
    
    @State var isOn = true
    
    var body: some View {
        TabView {
            Toggle(isOn: $isOn) {
                Text("Foo")
            }
            .toggleStyle(SwitchToggleStyle(tint: .green))
            .tabItem {
                Label("Foo", systemImage: "dot.square")
            }
            
            Text("Bar")
            .tabItem {
                Label("Bar", systemImage: "gear")
            }
            
        }.frame(width: 200, height:75)
    }
}

struct DevView_Previews: PreviewProvider {
    static var previews: some View {
        DevView()
    }
}

为什么此代码在预览版 Canvas 中呈现如下:

在此处输入图像描述

而不是正确显示带有标签的选项卡:

在此处输入图像描述

备案:XCode 13.2.1,BigSur 11.6.2

在 MacOS 上 SwiftUI 不会在标签标签中呈现图像: https://developer.apple.com/design/human-interface-guidelines/macos/windows-and-views/tab-views/

您必须 go 才能获得带有按钮的自定义解决方案。 这似乎很棘手。 我获得一半的唯一方法是以下。

在此处输入图像描述

这基本上是一个可定制的工具栏。 要在标题栏中没有它,您必须使用.windowToolbarStyle(.expanded)。 不幸的是,.windowToolbarStyle(.expanded) 必须直接在 WindowGroup 上:

@main
struct test_stack_macOsApp: App {
    var body: some Scene {
        WindowGroup {
            DevView()
                .toolbar(id: "myToolbar") {
                    ToolbarItem(id: "1", placement: .principal) {
                        Button {
                            // pass id to view
                        } label: {
                            Label("Foo", systemImage: "dot.square")
                        }
                    }
                    ToolbarItem(id: "2") {
                        Button {
                            // pass id to view
                        } label: {
                            Label("Bar", systemImage: "gear")
                        }
                    }
                }
                .navigationTitle("Foo")
        }
        .windowToolbarStyle(.expanded)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM