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.
SPONSORED Play is the first native iOS design tool created for designers and engineers. You can install Play for iOS and iPad today and sign up to check out the Beta of our macOS app with SwiftUI code export. We're also hiring engineers!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.