GCM*_*llo 5 variables state global swiftui
再次提出基本问题:我想让变量“ anytext ”对于我要添加的所有未来视图可见且可访问。就我而言,变量将是String。
import SwiftUI
struct Entry: View {
@State var anytext: String = ""
var body: some View {
VStack {
TextField("Enter text here", text: $anytext)
.padding()
.border(Color.black, width: 1)
.padding()
}
}
}
struct Entry_Previews: PreviewProvider {
static var previews: some View {
Entry()
}
}
Run Code Online (Sandbox Code Playgroud)
在应用程序的根视图或任何“子”视图可能需要访问anytext. anytext作为财产存储@Published在其中ObservedObject。
这是一个指针,但还会有很多类似的问题和内容。这是一篇HWS 文章,可能会有所帮助。
这是一个例子:
class MyModel: ObservableObject {
@Published var anytext = ""
}
Run Code Online (Sandbox Code Playgroud)
struct ContentView: View {
@StateObject private var model = MyModel()
var body: some View {
Entry().environmentObject(model)
}
}
struct Entry: View {
@EnvironmentObject private var model: MyModel
var body: some View {
VStack {
TextField("Enter text here", text: $model.anytext)
.padding()
.border(Color.black, width: 1)
.padding()
TextDisplayer()
}
}
}
struct TextDisplayer: View {
@EnvironmentObject private var model: MyModel
var body: some View {
Text(model.anytext)
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
他们可以访问所有三个视图model来获取anytext财产。
回答您的问题:
您使用是@Published因为String、Float等Double都是值类型。
使用环境对象,如此处所示。
他们没有坚持下去,请注意@AppStorage保存。