SwiftUIの基本を身につけたい方はこちら

【SwiftUI】@Bindingを使うとプレビューでエラーになる件について:Missing argument for parameter ‘xxx’ in call

事象

SwiftUIで@Bindingを使うと、そのViewのプレビュー(xxx_Previews)が以下のようなエラーになってしまいます。そのため、コメントアウトしたり削除したりしている方が多いのではないでしょうか?そうなるとSwiftUIのいいところであるホットリロードがなくなってしまいます。。

Missing argument for parameter 'xxx' in call

この記事では、その対応方法を紹介していきたいと思います。

原因

エラーの原因は、使おうとしているViewに@Bindingがあるので、@Binding@Stateとかの値を渡さなければならないからです。

しかし、そこのプレビュー内では@Stateを使っていないので、何を渡せば良いのだろうとなりますよね。。

解決方法

解決方法は以下の2パターンあります。

  1. static@Stateの変数を宣言して渡す
  2. .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))
    }
}

評価