SwiftUI Table
A Table in SwiftUI is used to present data in rows and columns. It provides features for sorting, selection and more.
To create a table insert a Table view and nested in there TableColumns.
import SwiftUI class Record: ObservableObject, Identifiable { var id: UUID = UUID() @Published var firstName: String @Published var lastName: String @Published var age: Int @Published var city: String init(firstName: String, lastName: String, age: Int, city: String) { self.firstName = firstName self.lastName = lastName self.age = age self.city = city } } struct SampleTableView: View { @State private var records: [Record] = [] @State private var sortOrder: [KeyPathComparator
] = [ KeyPathComparator(\Record.firstName), KeyPathComparator(\Record.lastName), KeyPathComparator(\Record.age), KeyPathComparator(\Record.city) ] var body: some View { VStack(alignment: .leading) { HStack { Text("Table") } .font(.title) Table(records, sortOrder: $sortOrder, columns: { TableColumn("First Name", value: \.firstName) TableColumn("Last Name", value: \.lastName, content: { rec in Text(rec.lastName) }) TableColumn("Age", value: \.age, content: { rec in Text("\(rec.age)") }) .alignment(.center) TableColumn("City", value: \.city) }) } .task() { records = [ Record(firstName: "John", lastName: "Smith", age: 50 , city: "Vancouver"), Record(firstName: "Jane", lastName: "Doe", age: 30 , city: "Toronto"), Record(firstName: "Alice", lastName: "Anderson", age: 25 , city: "Montreal"), Record(firstName: "Bob", lastName: "Brown", age: 40 , city: "Calgary") ] sortRecords(sortOrder) } .onChange(of: sortOrder) { _, sortOrder in sortRecords(sortOrder) } } private func sortRecords(_ sortOrder: [KeyPathComparator ]) { records.sort(using: sortOrder) } } #Preview { SampleTableView() }
