SwiftUI Sheets
Main Idea
There are several ways of showing views in SwiftUI, and one of the most basic is a sheet: a new view presented on top of our existing one. On iOS this automatically gives us a card-like presentation where the current view slides away into the distance a little and the new view animates in on top.
struct SecondView: View {
@Environment(\.dismiss) var dismiss
let name: String
var body: some View {
Button("Dismiss") {
dismiss()
}
}
}
struct ContentView: View {
@State private var showingSheet = false
var body: some View {
Button("Show Sheet") {
showingSheet.toggle()
}
.sheet(isPresented: $showingSheet) {
SecondView(name: "@two")
}
}
}
You can also show sheets using optionals object that conforms to the identifiable protocol
struct ContentView: View {
struct User: Identifiable {
var id = "Taylor Swift"
}
@State private var selectedUser: User? = nil
var body: some View {
Text("Hello, world!")
.onTapGesture {
selectedUser = User()
}
.sheet(item: $selectedUser) { user in
Text(user.id)
}
}
}