事象
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)) } }