SwiftUI @Binding初始化

时间:2019-06-20 12:25:34

标签: ios swift swiftui ios13

到目前为止,他一直在使用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

但是没有一个……任何想法?

2 个答案:

答案 0 :(得分:4)

在应用中使用LoggedInView时,您确实需要提供一些绑定,例如上一个视图中的@State@EnvironmentObject

对于PreviewProvider的特殊情况,您只需要一个固定值,就可以使用.constant(false)

例如

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

答案 1 :(得分:0)

  • 如果您需要一个属于单个视图的简单属性,则可以 应该使用 @State
  • 如果您需要具有可能会 属于您应该使用的多个视图(例如2-3个视图) @ObjectBinding
  • 最后,如果您需要具有需要使用所有周围视图的属性,则应使用 @EnvironmentObject 。 来源for detail information

对于您的情况,如果您仍想初始化Binding变量,则可以使用:

var binding: Binding = .constant(false)