Mit SwiftUI (Xcode 11.1) habe ich einige Ansichten mit 2-Wege-Bindungen eingerichtet (mit @Binding ). Die bidirektionale Aktualisierung funktioniert hervorragend.
Wie kann ich jedoch die Ansicht über den PreviewProvider instanziieren?
Zum Beispiel:
struct AddProjectView: View {
@Binding public var showModal: Bool
var body: some View {
return VStack {
Text("Add Project View")
Button("Dismiss") {
self.showModal = false
}
}
}
}
Ich kann das nicht tun, weil "wahr" keine Bindung ist:
struct AddProjectView_Previews: PreviewProvider {
static var previews: some View {
AddProjectView(showModal: true)
}
}
Und ich kann dies nicht tun, weil " Property Wrapper für lokale Eigenschaften noch nicht unterstützt werden ":
struct AddProjectView_Previews: PreviewProvider {
static var previews: some View {
@Binding var show = true
return AddProjectView(showModal: $show)
}
}
Wie machen wir das?
Vielen Dank!!
Sie müssen es in Ihrer Vorschau als @State deklarieren.
Denken Sie auch daran, dass es statisch sein muss, da es in einer statischen Funktion verwendet wird.
quelle
.constant(false)
. Wenn Sie also die Live-Vorschau verwenden, kann der Wert nicht geändert werden.Wenn Sie nur einen konstanten Wert benötigen , verwenden Sie
.constant(VALUE)
:Wenn Sie einen Wert benötigen, der in der Live-Vorschau geändert werden kann , verwende ich gerne diese Hilfsklasse:
Verwenden Sie es so:
Auf diese Weise können Sie das Ändern der Bindung in der Live-Vorschau testen.
quelle