Il n'est pas toujours requis d'ajouter un bouton pour traiter les données saisies dans un formulaire SwiftUI.
Les informations pourraient être traitées à différents moments, par exemple :
Si vous souhaitez tout de même ajouter un bouton à un formulaire, sachez qu'il n'est pas requis que le bouton soit placé à l'intérieur du Form. Il n'est d'ailleurs pas nécessaire d'utiliser un Form.
Voici quelques exemples de boutons situés au bas d'une série de TextField, avec et sans Form.
Dans ce premier exemple, remarquez l'ajout d'un VStack qui entoure le dernier TextField et le bouton. Ce VStack assure qu'il n'y aura pas de ligne grise juste avant le bouton puisqu'il n'y a une ligne grise qu'entre les enfants directs du Form.
Form {
HStack {
Text("Prénom")
.frame(width: largeurLibelles, alignment: .leading)
TextField("", text: $prenom)
}
// VStack pour éviter une ligne grise entre le dernier TextField et le bouton
VStack {
HStack {
Text("Nom de famille")
.frame(width: largeurLibelles, alignment: .leading)
TextField("", text: $nomFamille)
}
Button(action: {
// traitement ici
}) {
Text("Enregistrer")
.frame(maxWidth: .infinity)
}
.buttonStyle(.borderedProminent)
}
}

Ici, on utilise l'approche avec des sections pour les libellés.
Form {
Section(header: Text("Prénom")) {
TextField("", text: $prenom)
}
.listSectionSpacing(8)
Section(header: Text("Nom de famille")) {
TextField("", text: $nomFamille)
}
Button(action: {
// traitement ici
}) {
Text("Enregistrer")
.frame(maxWidth: .infinity) // sans ceci, le texte du bouton serait aligné à gauche
}
}

Voici un exemple sans Form.
VStack(alignment: .leading) {
Text("Prénom")
TextField("", text: $prenom)
.textFieldStyle(.roundedBorder)
.padding(.bottom, 20)
Text("Nom de famille")
TextField("", text: $nomFamille)
.textFieldStyle(.roundedBorder)
.padding(.bottom, 20)
Button(action: {
// traitement ici
}) {
Text("Enregistrer")
.frame(maxWidth: .infinity)
}
.buttonStyle(.bordered)
}
.padding()
Spacer()

▼Publicité