Updated for Xcode 14.2
Updated for iOS 15
SwiftUI’s forms work as containers, just like HStack
and VStack
, which means you can add other views inside them as needed. However, they automatically adapt the behavior and styling of some controls so they fit better in the form environment.
For example, this creates a form with a toggle, a segmented control, and a 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 {
Picker("Select a color", selection: $selectedColor) {
ForEach(colors, id: \.self) {
Text($0)
}
}
.pickerStyle(.segmented)
Toggle("Enable Logging", isOn: $enableLogging)
Button("Save changes") {
// activate theme!
}
}
}
}
Download this as an Xcode project
Important: If you’re using Xcode 12 you need to use SegmentedPickerStyle()
rather than .segmented
.
When that code is run you’ll see two things that are fundamental to the behavior of forms:
You can have as many rows in your form as you need, but remember to use Group
if you need more than 10.
SAVE 50% To celebrate WWDC23, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
Link copied to your pasteboard.