Updated for Xcode 14.2
Updated in iOS 15
SwiftUI’s list view has built-in support for sections and section headers, just like UITableView
in UIKit. To add a section around some cells, start by placing a Section
around it, optionally also adding a header and footer.
As an example, we could create a row that holds task data for a reminders app, then create a list view that has two sections: one for important tasks and one for less important tasks.
Here’s how that looks:
struct TaskRow: View {
var body: some View {
Text("Task data goes here")
}
}
struct ContentView: View {
var body: some View {
List {
Section(header: Text("Important tasks")) {
TaskRow()
TaskRow()
TaskRow()
}
Section(header: Text("Other tasks")) {
TaskRow()
TaskRow()
TaskRow()
}
}
}
}
Download this as an Xcode project
You can also add footer text to sections, like this:
List {
Section(header: Text("Other tasks"), footer: Text("End")) {
Text("Row 1")
Text("Row 2")
Text("Row 3")
}
}
Download this as an Xcode project
By default your section headers will match the default iOS style, but you can request larger, bolder section text using the headerProminence()
modifier and specifying .increased
, like this:
List {
Section(header: Text("Header")) {
Text("Row")
}
.headerProminence(.increased)
}
.listStyle(.insetGrouped)
Download this as an Xcode project
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.