How to present a new view using sheets
How to present a new view using sheets 관련
Updated for Xcode 15
Updated in iOS 15
SwiftUI’s sheets are used to present new views over existing ones, while still allowing users to drag down to dismiss the new view when they are ready.
To use a sheet, give it something to show (some text, an image, a custom view, etc), add a Boolean that defines whether the detail view should be showing, then attach it to your main view as a modal sheet.
For example, this creates a simple detail view, then presents it from ContentView
when a button is tapped:
struct SheetView: View {
@Environment(\.dismiss) var dismiss
var body: some View {
Button("Press to dismiss") {
dismiss()
}
.font(.title)
.padding()
.background(.black)
}
}
struct ContentView: View {
@State private var showingSheet = false
var body: some View {
Button("Show Sheet") {
showingSheet.toggle()
}
.sheet(isPresented: $showingSheet) {
SheetView()
}
}
}
Important
If you’re targeting iOS 14 or below, you should use @Environment(\.presentationMode) var presentationMode
and presentationMode.wrappedValue.dismiss()
instead.
Unlike navigation links, sheets don’t require a navigation stack to work.
Tips
If you don’t want your sheet to be dismissible by dragging downwards on iOS, use the fullScreenCover()
modifier instead.