7.3 给表单视图进行分组

SwiftUI 的表单通常需要分组(Section),就如 iOS 里的设置一样,网络设置一组,通知设置一组…..

Form 的分组跟 List 的分组有点不同,可以在两个地方重复使用相同的代码,可以给分组添加页眉和页脚,每个分组之间有个较大的距离间隙。

举个例子,我们创建一个两个分组的表单视图,第一组是一个分段控件和一个切换按钮,第二组是一个保存按钮,如下:

struct ContentView : View {
    @State var enableLogging = false

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

    var body: some View {
        NavigationView {
            Form {
                Section(footer: Text("Note: Enabling logging may slow down the app")) {
                    SegmentedControl(selection: $selectedColor) {
                        ForEach(0 ..< colors.count) {
                            Text(self.colors[$0]).tag($0)
                        }
                    }

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

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