SwiftUIはPreviewが非常に便利ですが、その分Previewのコードもしっかり書く必要があります。
通常の変数や@Stateの場合はそのまま値を渡せば良いですが、@Bindingを使用する場合は@Stateを宣言した変数を渡す必要があります。その為、Previewの構造体内で変数を宣言します。
また、previewsプロパティにはstaticが宣言されている為、@Stateの変数にもstaticを宣言する必要があります。
struct BindingTest: View {
@Binding var dispState: Bool
var body: some View {
if dispState {
return Text("Binding Preview Test")
}else{
return Text("Hello, World!")
}
}
}
struct BindingTest_Previews: PreviewProvider {
@State static var dispState = true
static var previews: some View {
BindingTest(dispState: $dispState)
}
}
面倒な場合はpreviewをコメントアウトしてしまえばビルドできますし、実機やシミュレータで実行してしまえば確認できますが、折角の充実しているpreview機能なのでしっかり使っていきましょう。
コメント