Unerwartetes Verhalten im SwiftUI Form-Container bei Verwendung mehrerer Schaltflächen [duplizieren]

Nov 27 2020

Angesichts des folgenden Codes habe ich erwartet, dass die Auswahl ZEROnach dem Tippen auf die ZEROSchaltfläche erfolgt, aber das ist immer so ONE. Tatsächlich muss ich nicht auf den Schaltflächennamen tippen, sondern in der Mitte der Zeile, und die Auswahl bleibt bestehen ONE. Dies ist ein unerwartetes Verhalten und möglicherweise ein Fehler. Hat jemand eine Erklärung und / oder Problemumgehung dafür? Verwenden von iOS 14.0 und 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")
                }
            }
        }
    }     
}

Antworten

2 HarshilPatel Nov 27 2020 at 04:44

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

Ich habe dem .foregroundColor(.blue)Schaltflächentext hinzugefügt , da .buttonStyle(PlainButtonStyle())Ihre Schaltflächen beim Hinzufügen zu Ihrer Schaltfläche wie einfacher Text aussehen.