首页 > 解决方案 > 如何在没有分组表格样式的 SwiftUI 中创建 UISplitViewController?

问题描述

TL;博士

SwiftUI 的 UISplitViewSplitView 控制器设置正在对我的表格视图进行分组。为什么?

struct ContentView: View {
    var body: some View {
        NavigationView {
            List(0..<5) { value in
                HStack {
                    Text("Value \(value)")
                }
            }
            .navigationTitle("List View")

            Text("Split View")
        }
    }
}

样品 1

分组的 iOS 表格视图

更长

我正在研究 WWDC20 的 SwiftUI 轨道将其视为长代码。从第一个视频“SwiftUI 简介”开始。

我开始了一个包含资源和一切的完整示例项目。一切都很顺利,直到我开始努力支持 iPad。我知道自从视频制作以来确实发生了一些变化,但没有发现任何与 UISplitController 相关的内容。

在 bug 出现后,我建立了一个较小的项目,该项目只是提供了拆分控制器来测试这个问题。

只要我只是展示ContentViewiPhone 版,UI 就可以按预期工作。

struct ContentView: View {
    var body: some View {
        NavigationView {
            List(0..<5) { value in
                HStack {
                    Text("Value \(value)")
                }
            }
            .navigationTitle("List View")
        }
    }
}

样品 2

未分组的 iOS 表格视图

我试过在设备上执行,问题仍然存在。

标签: iosswiftuitableviewuisplitviewcontrollerwwdc

解决方案


只需明确使用普通列表样式:

var body: some View {
    NavigationView {
        List(0..<5) { value in
            HStack {
                Text("Value \(value)")
            }
        }
        .listStyle(PlainListStyle())       // << here !!
        .navigationTitle("List View")

        Text("Split View")
    }
}

推荐阅读