amin torabi
amin torabi

Reputation: 299

you can't present Sheet in child View in SwiftUI if there is already a sheet in parent view

Is it possible to present sheet in a child view in SwiftUI that already has a Sheet in its parent view ?

struct SheetTest: View {
    @State var showFirstSheet = false
  
    var body: some View {
        VStack {
            Text("FirstView")
                .onTapGesture(count: 1, perform: {
                    showFirstSheet = true
                })
            SomeView()
        }
        .sheet(isPresented: $showFirstSheet, content: {
            Text("firstsheet")
        })
            
    }
}
struct SomeView:View {
    @State var showSecondSheet = false
    var body: some View {
        Text("SecondView")
            .onTapGesture(count: 1, perform: {
                showSecondSheet = true
            })
            .sheet(isPresented: $showSecondSheet, content: {
                Text("secondsheet")
            })
    }
}

I am currently using Xcode 12 beta 3! and second sheet can't be presented this way! I have to present it in the parent view!

Upvotes: 3

Views: 1241

Answers (1)

yutailang0119
yutailang0119

Reputation: 103

The solution is to be careful not to add .sheet to the same view tree.
I'm using Xcode 12.1 (12A7403) .

struct SheetTest: View {
    @State var showFirstSheet = false

    var body: some View {
        VStack {
            Text("FirstView")
                .onTapGesture(count: 1, perform: {
                    showFirstSheet = true
                })
                .sheet(isPresented: $showFirstSheet, content: {
                    Text("firstsheet")
                })
            SomeView()
        }
    }
}
struct SomeView:View {
    @State var showSecondSheet = false
    var body: some View {
        Text("SecondView")
            .onTapGesture(count: 1, perform: {
                showSecondSheet = true
            })
            .sheet(isPresented: $showSecondSheet, content: {
                Text("secondsheet")
            })
    }
}

Upvotes: 4

Related Questions