1. ホーム
  2. ios

[解決済み] SwiftUI @バインディングの初期化

2023-03-11 04:36:05

質問

SwiftUIで遊んでいるうちに BindableObjects などの概念を理解しました(少なくとも私はそうしたいと思います)。

私は答えを見つけることができないような愚かな問題にぶつかりました。 をどのように初期化するのですか? @Binding 変数を初期化する方法は?

私は次のようなコードを持っています。

struct LoggedInView : View {

    @Binding var dismissView: Bool

    var body: some View {
        VStack {
            Text("Hello World")
        }
    }
}

プレビューのコードでは、パラメータとして Binding<Bool> :

#if DEBUG
struct LoggedInView_Previews : PreviewProvider {
    static var previews: some View {
        LoggedInView(dismissView: **Binding<Bool>**)
    }
}
#endif

どのように初期化すればいいのでしょうか? 試してみました。

Binding<Bool>.init(false)
Binding<Bool>(false)

あるいは、さらに

@Binding var dismissView: Bool = false

しかし、どれもうまくいきません...何かアイデアはありますか?

どのように解決するのですか?

を使用する場合 LoggedInView を使用する場合、バインディングを提供する必要があります。 @State のようなバインディングを提供する必要があります。 @EnvironmentObject .

の特殊なケースについては PreviewProvider で、固定値が必要な場合は .constant(false)

#if DEBUG
struct LoggedInView_Previews : PreviewProvider {
    static var previews: some View {
        LoggedInView(dismissView: .constant(false))
    }
}
#endif