再次基本问题:
我想让变量“anytext“对于我要添加的所有未来视图都可见且可访问。在我的例子中,变量将是String.
- 如果是的话,程序会改变吗?Float?
- 我怎样才能将其另存为全局变量?
- 如果我重新启动应用程序,变量会自行删除吗?如何保存即使重新启动应用程序后仍保留的变量?
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()
}
}
在应用程序的根视图或任何“子”视图可能需要访问的位置创建并传递环境对象anytext
. Store anytext
as a @Published
财产在那个ObservedObject
.
这是一个指针,但还会有很多类似的问题和内容。这里有一个HWS文章 https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-environmentobject-to-share-data-between-views这可能有帮助。
这是一个例子:
class MyModel: ObservableObject {
@Published var anytext = ""
}
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)
}
}
Result:
所有三个视图都有model
他们可以访问,以获得anytext
财产。
回答您的问题:
-
You use @Published
因为String
, Float
, Double
等等都是值类型。
-
使用环境对象,如此处所示。
-
他们没有坚持下去,请参阅@AppStorage
为了保存它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)