Tiến Đức Nguyễn
Tiến Đức Nguyễn

Reputation: 133

IOS App Crash when show keyboard after change binding inside sheet

this is my code with swiftui, when I change tradingMode inside sheet by click button, after show keyboard from ContentView => app crash. Pease help me and thanks!

enum TradingMode { case Derivatives, Equities }

struct ContentView: View {
    @State var tradingMode : TradingMode = TradingMode.Equities
    @State var isShowSecondView = false
    
    var body: some View {
        VStack(content: {
            Button("show second view") {
                isShowSecondView.toggle()
            }
            TabView {
                switch tradingMode {
                case .Equities:
                    VStack(content: {
                        Text("Tab 1 Un")
                            .padding()
                        TextField("ple", text: .constant(""))
                    })
                    .tabItem {
                        Text("tab 1")
                    }.tag(0)
                    
                case .Derivatives:
                    VStack(content: {
                        Text("Tab 1 Der")
                            .padding()
                        TextField("ple", text: .constant(""))
                    })
                    .tabItem {
                        Text("tab 1")
                    }.tag(0)
                }
                
                switch tradingMode {
                case .Equities:
                    VStack(content: {
                        Text("Tab 2 Un")
                            .padding()
                        TextField("ple", text: .constant(""))
                    })
                    .tabItem {
                        Text("tab 2")
                    }.tag(1)
                case .Derivatives:
                    VStack(content: {
                        Text("Tab 2 Der")
                            .padding()
                        TextField("ple", text: .constant(""))
                    })
                    .tabItem {
                        Text("tab 2")
                    }.tag(1)
                }
            }
            
        })
        .sheet(isPresented: $isShowSecondView, content: {
            SecondView(tradingMode: $tradingMode)
        })
       
    }
}

struct SecondView: View {
    @Environment(\.presentationMode) var presentation
    @Binding var tradingMode : TradingMode
    
    var body: some View {
        VStack(content: {
            Button("Change state") {
                if tradingMode == .Derivatives {
                    tradingMode = .Equities
                } else {
                    tradingMode = .Derivatives
                }
                self.presentation.wrappedValue.dismiss()
            }
        })
       
    }
}

This is my bug: https://drive.google.com/file/d/18eXCmlByGqJylE_hCZbtJ4Rn0wmI0bb_/view?usp=sharing

Upvotes: 0

Views: 233

Answers (1)

Ho Si Tuan
Ho Si Tuan

Reputation: 540

Your code work well. You can try to clean build folder CMD + shift + K or clear derived data in ~/Library/Developer/Xcode/DerivedData

Upvotes: 1

Related Questions