Creare un form in SwiftUI

Mattepuffo's logo
Creare un form in SwiftUI

Creare un form in SwiftUI

Oggi vediamo come usare i Form in SwiftUI.

Vedremo anche come validarlo; su molti aspetti è diverso da come siamo abituati.

Ad esempio nella validazione faremo in modo che il pulsante di invio non sia visibile finchè i dati richiesti non sono stati inseriti.

Inoltre vi specifico che il mio form è in una finestra modale, ma non cambia praticamente nulla.

Ecco il codice:

import SwiftUI

struct ModalAdd: View {
    @Environment(\.presentationMode) var presentationMode;
    
    @State private var titolo = "";
    @State private var autore = "";
    @State private var pubblicato = true;
    @State private var prezzo = 0.0;
    
    var body: some View {
        NavigationView {
            Form {
                Section {
                    TextField("Titolo", text: $titolo)
                    
                    Picker(selection: $autore,
                           label: Text("Autori")) {
                            ForEach(Autori.autori, id: \.self) { au in
                                Text(au).tag(au)
                            }
                    }
                    
                    Toggle(isOn: $pubblicato,
                           label: {
                            Text("Pubblicato?")
                    })
                    
                    Stepper(value: $prezzo,
                            in: 0...1000,
                            step: 0.1,
                            label: {
                                Text("Prezzo: \(self.prezzo)")
                    })
                    
                    if self.controllaForm() {
                        Button(action: {
                            print("OK")
                        }, label: {
                            Text("Salva")
                        })
                    }
                }
            }.navigationBarTitle(Text("Add book"))
        }
    }
    
    private func controllaForm() -> Bool {
        if titolo.isEmpty || autore.isEmpty {
            return false;
        }
        
        return true;
    }
}

struct Autori {
    static let autori = [
        "Stephen King", "Clive Cussler", "Anne Rice"
    ]
}

Per il prezzo abbiamo usato un Picker, giusto per vedere qualcosa in più; ma non è obbligatorio.

In generale per i campi usiamo gli @State; per chi conosce React o simile non è una cosa nuova.

Enjoy!


Condividi su Facebook

Commentami!