我在多个视图中需要一些变量,我希望用户能够更改这些变量。这些变量编辑链接,因此例如根据经度是什么结果是不同的。我从链接中获得的值显示在图表中。
所以我希望用户能够为给定的变量输入他们自己的值(在下面的代码中)。我不在乎它是否在同一个视图中,或者是否由两个视图组成并且变量与图形一起传递给视图。
唯一重要的是,当用户单击按钮时,图表和链接会刷新,以便显示正确的图表。
另一件重要的事情是,我需要能够访问顶级变量。这是我到目前为止的代码,但它显示了错误:
<块引用>无法将“字符串”类型的值转换为预期的参数类型“绑定”
import SwiftUI
var month = "1"
var day = "1"
var year = "2020"
var latitude = "59.911232"
var longitude = "10.757933"
var offset = "1.0"
struct ContentView: View {
var body: some View {
GraphView()
TextField(text: latitude)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
答案 0 :(得分:3)
TextField
需要绑定到某些动态属性的真实来源。如果您想全局保留这些值,请将它们包装到视图模型的某个共享实例中,例如
final class Params: ObservableObject {
static let global = Params()
var month = "1"
var day = "1"
var year = "2020"
var latitude = "59.911232"
var longitude = "10.757933"
var offset = "1.0"
}
所以现在我们可以从视图中观察(并更新和绑定到)这些参数
struct ContentView: View {
@ObservedObject var global = Params.global
var body: some View {
GraphView()
TextField(text: $global.latitude)
}
}