Skip to main content

Breaking forms into sections

About 2 minSwiftSwiftUIArticle(s)bloghackingwithswift.comcrashcourseswiftswiftuixcodeappstore

Breaking forms into sections 관련

SwiftUI by Example

Back to Home

Breaking forms into sections | SwiftUI by Example

Breaking forms into sections

Updated for Xcode 15

Updated in iOS 15

SwiftUI's forms often work best when broken into sections, just like regular lists of content. How you break them up is down to you, but usually it works best when you group things according to their purpose – if it were an order page you might put items in one group, customization in another, and delivery in a third.

Helpfully, form sections are identical to list sections, which means you can re-use the same code in both places. So, you can add a header and/or footer to your sections, or use neither and just get some on-screen spacing between your sections.

As an example, this creates a form with two sections – the first with a segmented control and toggle, and the second with a save button:

struct ContentView: View {
    @State private var enableLogging = false
    @State private var selectedColor = "Red"
    @State private var colors = ["Red", "Green", "Blue"]

    var body: some View {
        Form {
            Section(footer: Text("Note: Enabling logging may slow down the app")) {
                Picker("Select a color", selection: $selectedColor) {
                    ForEach(colors, id: \.self) {
                        Text($0)
                    }
                }
                .pickerStyle(.segmented)

                Toggle("Enable Logging", isOn: $enableLogging)
            }

            Section {
                Button("Save changes") {
                    // activate theme!
                }
            }
        }
    }
}

Download this as an Xcode projectopen in new window

An inset-list style form with two sections. The first section has a segmented picker, a toggle, and footer text. The second section has a blue-text button.
An inset-list style form with two sections. The first section has a segmented picker, a toggle, and footer text. The second section has a blue-text button.

Important

In Xcode 12 you need to use SegmentedPickerStyle() rather than .segmented.

Similar solutions…
How to add sections to a list | SwiftUI by Example

How to add sections to a list
Bindings and forms | SwiftUI by Example

Bindings and forms
Working with forms | SwiftUI by Example

Working with forms
Enabling and disabling elements in forms | SwiftUI by Example

Enabling and disabling elements in forms
Pickers in forms | SwiftUI by Example

Pickers in forms

이찬희 (MarkiiimarK)
Never Stop Learning.