In this tutorial I will demonstrate how to use the pull to refresh feature in SwiftUI.
//
// ContentView.swift
// swiftuidev15ios
//
// Created by Cairocoders
//
import SwiftUI
struct ContentView: View {
@State private var posts = [
NewsItem(id: 0, title: "Want the latest posts?", body: "Pull to refresh!")
]
var body: some View {
NavigationView {
List(posts) { item in
VStack(alignment: .leading) {
Text(item.title)
.font(.headline)
Text(item.body)
.foregroundColor(.secondary)
}
}
.refreshable {
do {
// Fetch and decode JSON into posts items
let url = URL(string: "https://jsonplaceholder.typicode.com/posts")!
let (data, _) = try await URLSession.shared.data(from: url)
posts = try JSONDecoder().decode([NewsItem].self, from: data)
} catch {
// Something went wrong; clear the news
posts = []
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct NewsItem: Decodable, Identifiable {
let id: Int
let title: String
let body: String
}
