如何解决SWIFTUI:当我有 init 声明时,使用环境呈现模型关闭按钮单击视图
所以我想这样做,最简单的方法是使用@Environment(.presentationMode) varpresentationMode。但是我的视图中有 INIT() 声明,我不知道如何将 Environment var 放入其中,以在主体视图中使用它。
可以用吗?以及如何在 init func 中声明它?
我的初始化:
var model: ResponseModel
@State var operacion: String
@State var cliente: String
@State var usd = ""
@State var ars = ""
@State var tasa = ""
@State var idd = ""
init(model: ResponseModel) {
self.model = model
self.operacion = model.operacion ?? ""
self.usd = model.usd ?? ""
self.ars = model.ars ?? ""
self.tasa = model.tasa ?? ""
self.cliente = model.cliente ?? ""
self.idd = model.id ?? ""
}
如果我不把环境变量放在 init 声明中,我就会有一个构建错误
谢谢
解决方法
在使用 self 之前,您必须初始化 operacion
和 cliente
。
您可以像处理其他状态属性一样执行此操作。像这样:
@State var operacion: String = ""
但是如果要在init中改变值,最好使用下面的方法。
或者你在 init.d 中初始化这些变量。由于它们是 propertyWrappers,因此看起来很特别,如下所示:
init(model: ResponseModel) {
self.model = model
self._operacion = State(wrappedValue: model.operacion ?? "")
// ...
这是一个完整的工作示例:
struct Test: View {
@Environment(\.presentationMode) var presentationMode
var model: ResponseModel
@State var operacion: String
@State var cliente: String
@State var usd: String
@State var ars: String
@State var tasa: String
@State var idd: String
init(model: ResponseModel) {
self.model = model
_operacion = State(wrappedValue: model.operacion ?? "")
_cliente = State(wrappedValue: model.cliente ?? "")
_usd = State(wrappedValue: model.usd ?? "")
_ars = State(wrappedValue: model.ars ?? "")
_tasa = State(wrappedValue: model.tasa ?? "")
_idd = State(wrappedValue: model.id ?? "")
}
var body: some View {
Text("Hallo World")
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。