SwiftUI如何在View需要初始化器中的@Binding时实例化PreviewProvider [英] SwiftUI How to instantiate PreviewProvider when View requires @Binding in initializer

查看:39
本文介绍了SwiftUI如何在View需要初始化器中的@Binding时实例化PreviewProvider的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用SwiftUI(Xcode 11.1),我已经设置了一些使用2向绑定的视图(使用 @Binding ).双向更新效果很好.

With SwiftUI (Xcode 11.1), I've got some Views set up with 2-way bindings (using @Binding). Two-way updating works great.

但是,如何从PreviewProvider实例化视图?

However, how can I instantiate the view from the PreviewProvider?

例如:

struct AddProjectView: View {

    @Binding public var showModal: Bool

    var body: some View {

        return VStack {
            Text("Add Project View")
            Button("Dismiss") {
                self.showModal = false
            }
        }
    }
}

我不能这样做,因为"true"不是绑定:

I can't do this, because "true" is not a Binding:

struct AddProjectView_Previews: PreviewProvider {
    static var previews: some View {
        AddProjectView(showModal: true)
    }
}

我不能这样做,因为"本地属性尚不支持属性包装器":

And I can't do this because "Property wrappers are not yet supported on local properties":

struct AddProjectView_Previews: PreviewProvider {
    static var previews: some View {
        @Binding var show = true
        return AddProjectView(showModal: $show)
    }
}

我们如何做到这一点?

谢谢!

推荐答案

.constant 就是为了这个目的:

///创建具有不变的 value 的绑定.

struct AddProjectView: View {
    @Binding public var showModal: Bool
    var body: some View {
        return VStack {
            Text("Add Project View")
            Button("Dismiss") {
                self.showModal = false
            }
        }
    }
}

struct AddProjectView_Previews: PreviewProvider {
    static var previews: some View {
        AddProjectView(showModal: .constant(true))
    }
}

这篇关于SwiftUI如何在View需要初始化器中的@Binding时实例化PreviewProvider的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆