Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
394 views
in Technique[技术] by (71.8m points)

swiftui - Presenting a Sheet modally, @State value is not changing

I have tried much time on it but I couldn't figure out why it is not working.

The problem is when I tap the button, the new value inside the sheet is not updated. It always show the same value which is set up in start.

 @State var value:String = "empty"
 @State var explorePageIsEnabled:Bool = false
    
   VStack{
    
    Button("tap me"){
        value = "the new one"
        exploreStatusIsEnabled.toggle()
    }
    .sheet(isPresented: $exploreStatusIsEnabled, content: {
        Text(value)
    })
    
}

Deployment target is IOS 14+


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Create a separate struct view for text and use Binding.

struct SheetView: View {
    @Binding var value: String
    
    var body: some View {
        Text(value)
    }
}

struct ContentView: View {
    
    @State private var value: String = "empty"
    @State private var explorePageIsEnabled: Bool = false
    
    var body: some View {
        VStack{
            
            Button("tap me"){
                value = "the new one"
                explorePageIsEnabled.toggle()
            }
            .sheet(isPresented: $explorePageIsEnabled, content: {
                SheetView(value: $value)
            })
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...