Skip to main content

How to present a new view using sheets

About 2 minSwiftSwiftUIArticle(s)bloghackingwithswift.comcrashcourseswiftswiftuixcodeappstore

How to present a new view using sheets 관련

SwiftUI by Example

Back to Home

How to present a new view using sheets | SwiftUI by Example

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()
        }
    }
}

Download this as an Xcode projectopen in new window

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.

Similar solutions…
How to present multiple sheets | SwiftUI by Example

How to present multiple sheets
How to present a full screen modal view using fullScreenCover() | SwiftUI by Example

How to present a full screen modal view using fullScreenCover()
SwiftUI tips and tricks | SwiftUI by Example

SwiftUI tips and tricks
How to convert a SwiftUI view to an image | SwiftUI by Example

How to convert a SwiftUI view to an image
How to push a new view onto a NavigationStack | SwiftUI by Example

How to push a new view onto a NavigationStack

이찬희 (MarkiiimarK)
Never Stop Learning.