Updated for Xcode 13.3
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 Fernando's book will guide you in fixing bugs in three real, open-source, downloadable apps from the App Store. Learn applied programming fundamentals by refactoring real code from published apps. Hacking with Swift readers get a $10 discount!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.