W SwiftUI (Xcode 11.1) mam kilka widoków skonfigurowanych z powiązaniami 2-kierunkowymi (używając @Binding ). Dwukierunkowa aktualizacja działa świetnie.
Jak jednak utworzyć instancję widoku z PreviewProvider?
Na przykład:
struct AddProjectView: View {
@Binding public var showModal: Bool
var body: some View {
return VStack {
Text("Add Project View")
Button("Dismiss") {
self.showModal = false
}
}
}
}
Nie mogę tego zrobić, ponieważ „prawda” nie jest wiązaniem:
struct AddProjectView_Previews: PreviewProvider {
static var previews: some View {
AddProjectView(showModal: true)
}
}
Nie mogę tego zrobić, ponieważ „ Opakowania właściwości nie są jeszcze obsługiwane w przypadku właściwości lokalnych ”:
struct AddProjectView_Previews: PreviewProvider {
static var previews: some View {
@Binding var show = true
return AddProjectView(showModal: $show)
}
}
Jak to robimy?
Dzięki!!
Musisz zadeklarować go jako @State w podglądzie.
Pamiętaj również, że musi być statyczny, ponieważ jest używany w funkcji statycznej.
źródło
.constant(false)
, tzn. Jeśli korzystasz z podglądu na żywo, wartości nie można zmienić.Jeśli potrzebujesz tylko stałej wartości , użyj
.constant(VALUE)
:Jeśli potrzebujesz wartości, którą można zmienić w podglądzie na żywo , chciałbym użyć tej klasy pomocnika:
Używaj go w ten sposób:
Pozwala to przetestować zmianę powiązania w podglądzie na żywo.
źródło