7.2 从表单视图的设计开始

SwiftUI 的表单视图就像一个容器,和 HStackVStack 一样,可以根据需要添加其它视图。但是,它会自动调整某些控件的行为和外观样式,以便它可以更好地适应表单环境。

举个例子,我们来创建一个带有切换按钮,分段控件和按钮的表单,如下:

struct ContentView : View {
    @State var enableLogging = false

    @State var selectedColor = 0
    @State var colors = ["Red", "Green", "Blue"]

    var body: some View {
        NavigationView {
            Form {
                SegmentedControl(selection: $selectedColor) {
                    ForEach(0 ..< colors.count) {
                        Text(self.colors[$0]).tag($0)
                    }
                }

                Toggle(isOn: $enableLogging) {
                    Text("Enable Logging")
                }

                Button(action: {
                // activate theme!
                }) {
                    Text("Save changes")
                }
            }.navigationBarTitle(Text("Settings"))
        }
    }
}

注意一点,Xcode 11 至少需要 betea 2 (2019-06-18 release) 及以上版本才支持 Form 视图容器。

运行该代码时,可以看到两个对表单行为比较重要的事情:

可以根据需要设定多个单元格,但是如果超过了 10 个,就需要采用分组模式了。