Com o SwiftUI (Xcode 11.1), eu tenho algumas Views configuradas com ligações bidirecionais (usando @Binding ). A atualização bidirecional funciona muito bem.
No entanto, como posso instanciar a exibição do PreviewProvider?
Por exemplo:
struct AddProjectView: View {
@Binding public var showModal: Bool
var body: some View {
return VStack {
Text("Add Project View")
Button("Dismiss") {
self.showModal = false
}
}
}
}
Não posso fazer isso, porque "true" não é uma ligação:
struct AddProjectView_Previews: PreviewProvider {
static var previews: some View {
AddProjectView(showModal: true)
}
}
E não posso fazer isso porque " Os invólucros de propriedades ainda não são suportados nas propriedades locais ":
struct AddProjectView_Previews: PreviewProvider {
static var previews: some View {
@Binding var show = true
return AddProjectView(showModal: $show)
}
}
Como vamos fazer isso?
Obrigado!!
Você deve declará-lo como @State na sua visualização.
Lembre-se também de que ele precisa ser estático, pois é usado em uma função estática.
fonte
.constant(false)
, ou seja, se você usar a visualização ao vivo, o valor não poderá ser alterado.Se você precisar apenas de um valor constante , use
.constant(VALUE)
:Se você precisar de um valor que possa ser alterado na visualização ao vivo , eu gosto de usar esta classe auxiliar:
Use-o assim:
Isso permite testar a alteração da encadernação na visualização ao vivo.
fonte