How do I paginate API results in SwiftUI with Swift?

Paginating API results in SwiftUI requires managing data fetched from the API, and handling the UI to only display a subset of that data at a time. Here’s an example of how to implement pagination for an API using SwiftUI.

struct ContentView: View { @State private var items: [Item] = [] @State private var isLoading = false @State private var currentPage = 1 private let pageSize = 10 var body: some View { ScrollView { VStack { ForEach(items) { item in Text(item.name) } if isLoading { ProgressView() .onAppear(perform: loadMore) } } } .onAppear(perform: loadMore) .navigationTitle("Paginated API Results") } func loadMore() { guard !isLoading else { return } isLoading = true let url = URL(string: "https://example.com/api/items?page=\(currentPage)&size=\(pageSize)")! URLSession.shared.dataTask(with: url) { data, _, _ in if let data = data { let newItems = try! JSONDecoder().decode([Item].self, from: data) DispatchQueue.main.async { self.items.append(contentsOf: newItems) self.currentPage += 1 self.isLoading = false } } }.resume() } } struct Item: Decodable, Identifiable { var id: Int var name: String }

SwiftUI Pagination API Swift iOS Development