Comportement inattendu dans le conteneur de formulaire SwiftUI lors de l'utilisation de plusieurs boutons [dupliquer]

Nov 27 2020

Étant donné le code ci-dessous, je m'attendais à voir la sélection ZEROaprès avoir appuyé sur le ZERObouton, mais c'est toujours le cas ONE. En fait, je n'ai pas besoin de taper sur le nom du bouton, mais au milieu de la ligne, et la sélection sera toujours ONE. Il s'agit d'un comportement inattendu et probablement d'un bogue. Quelqu'un a une explication et / ou une solution de contournement pour cela? Utilisation d'iOS 14.0 et 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")
                }
            }
        }
    }     
}

Réponses

2 HarshilPatel Nov 27 2020 at 04:44

Utilisez 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())
                    
            }
        }
    }
}

J'ai ajouté .foregroundColor(.blue)au texte du bouton parce que si vous ajoutez .buttonStyle(PlainButtonStyle())à votre bouton, vos boutons ressembleront à du texte brut.