web-dev-qa-db-fra.com

Comment présenter une alerte avec swiftUI

Dans swiftUI, j'ai découvert le type Alert. Mais je me demande comment le montrer avec la méthode presentation.

L'initialisation d'un Alert est assez facile. Mais comment utiliser la reliure?

struct ContentView : View {
    var body: some View {
        Button(action: {
            // Don't know how to use the `binding` below
            presentation(binding, alert: {
                Alert(title: Text("Hello"))
            })
        }, label: {
            Text("asdf")
        })
    }
}

La liaison est de type Binding<Bool>

12
struct ContentView: View {

    @State var aAlert = false

    var body: some View {
        Text("Alert").tapAction {
            self.aAlert = true
        }.presentation($aAlert, alert:{ Alert(title: Text("Alert"))})
    }
}
1
CrazyPro007

En plus de la réponse de @ tsp, pour afficher une alerte avec deux boutons et actionner le bouton de la poignée, vous pouvez procéder comme suit:

@State var showAlert = false

var body: some View {
  Button(action: {
    self.showAlert = true
  }) {
    Text("Show Alert")
  }
  .presentation($showAlert) {
      Alert(title: Text("Title"), message: Text("Message..."),
          primaryButton: .default (Text("OK")) {
            print("OK button tapped")
          },
          secondaryButton: .cancel()
      )
  }
}

Résultat:

enter image description here

0

SwiftUI

Créez d'abord une alerte de base:

Alert(title: Text("Alert title"), message: Text("Alert message"), dismissButton: .default(Text("Got it!")))

Définissez ensuite une condition pouvant être liée qui indique quand l'alerte sera visible ou non. Basculez cette condition pour afficher/masquer l'alerte.

struct ContentView: View {
    @State private var showingAlert = false

    var body: some View {
        Button(action: {
            self.showingAlert = true
        }) {
            Text("Show Alert")
        }
        .alert(isPresented: $showingAlert) {
            Alert(title: Text("Important message"), message: Text("Wear sunscreen"), dismissButton: .default(Text("Got it!")))
        }
    }
}
0
Prashant Gaikwad