कई बटन का उपयोग करते समय SwiftUI फॉर्म कंटेनर में अप्रत्याशित व्यवहार [डुप्लिकेट]

Nov 27 2020

नीचे दिए गए कोड को देखते हुए मुझे उम्मीद है कि चयन बटन ZEROपर टैप करने के बाद होगा ZERO, लेकिन यह हमेशा होता है ONE। वास्तव में, मुझे बटन नाम पर टैप करने की आवश्यकता नहीं है, लेकिन पंक्ति के बीच में, और चयन अभी भी होगा ONE। यह अप्रत्याशित व्यवहार है और संभवतः एक बग है। किसी को भी इसके लिए एक स्पष्टीकरण और / या समाधान है? IOS 14.0 और Xcode 12.2 का उपयोग करना

struct TestForm : View {
    
    @State var selection = ""
    
    var body : some View {
        Form {
            Text("selection: \(selection)")
            HStack {
                Button(action: {
                    selection = "ZERO"
                }) {
                    Text("ZERO")
                }
                Spacer()
                Button(action: {
                    selection = "ONE"
                }) {
                    Text("ONE")
                }
            }
        }
    }     
}

जवाब

2 HarshilPatel Nov 27 2020 at 04:44

PlainButtonStyle () का उपयोग करें ।

struct ContentView: View {
    @State var selection = ""
    
    var body : some View {
        Form {
            Text("selection: \(selection)")
            HStack {
                Button(action: {
                selection = "ZERO"
            }) {
                Text("ZERO")
                .foregroundColor(.blue)
            }.buttonStyle(PlainButtonStyle())
                
            Spacer()
                
            Button(action: {
                selection = "ONE"
            }) {
                Text("ONE")
                .foregroundColor(.blue)
            }.buttonStyle(PlainButtonStyle())
                    
            }
        }
    }
}

मैंने .foregroundColor(.blue)बटन पाठ में जोड़ा क्योंकि अगर आप .buttonStyle(PlainButtonStyle())अपने बटन को जोड़ते हैं तो यह आपके बटन को सादे पाठ की तरह बना देगा।