事象
SwiftUIで@Bindingを使うと、そのViewのプレビュー(xxx_Previews)が以下のようなエラーになってしまいます。そのため、コメントアウトしたり削除したりしている方が多いのではないでしょうか?そうなるとSwiftUIのいいところであるホットリロードがなくなってしまいます。。
Missing argument for parameter 'xxx' in call
この記事では、その対応方法を紹介していきたいと思います。
原因
エラーの原因は、使おうとしているViewに@Bindingがあるので、@Bindingに@Stateとかの値を渡さなければならないからです。
しかし、そこのプレビュー内では@Stateを使っていないので、何を渡せば良いのだろうとなりますよね。。
解決方法
解決方法は以下の2パターンあります。
staticな@Stateの変数を宣言して渡す.constant()を使って値を渡す
1. staticな@Stateの変数を宣言して渡す
プレビュー内でstaticな@Stateの値を宣言してそれを使う方法です。
struct NextView_Previews: PreviewProvider {
@State static var isShowNextView = false
static var previews: some View {
NextView(isShowNextView: $isShowNextView)
}
}
2. .constant()を使って値を渡す
.constant()で値を囲って、Binding<Value>に変換する方法です。
struct NextView_Previews: PreviewProvider {
static var previews: some View {
NextView(isShowNextView: .constant(false))
}
}

