修改环境对象以进行预览?

时间:2020-04-28 05:48:49

标签: swiftui

我正在使用环境对象将视图模型传递给视图。为了预览不同的状态,如何在将环境对象传递给预览之前更改环境对象的某些属性?

我想做这样的事情,但这不起作用:

struct view_Previews: PreviewProvider {


    @EnvironmentObject static var authenticationViewModel: AuthenticationViewModel {
        get {
            let v = authenticationViewModel
            v.showResendCodeTimer = true
            return v
        }
    }

    static var previews: some View {

          SomeView().environmentObject(authenticationViewModel)
    }
}

1 个答案:

答案 0 :(得分:3)

这是可行的方法

static var previews: some View {
    Group {
        SomeView().environmentObject({ () -> AuthenticationViewModel in
                let v = AuthenticationViewModel()
                v.showResendCodeTimer = true
                return v
            }())
        SomeView().environmentObject({ () -> AuthenticationViewModel in
                let v = AuthenticationViewModel()
                v.showResendCodeTimer = false
                return v
            }())
    }
}