我有此代码:
主视图
import SwiftUI
struct ContentView: View {
@EnvironmentObject var data:Pessoa
var body: some View {
NavigationView{
VStack{
NavigationLink(destination:view2(data: data)){
Text(data.data.firstObject as! String)
}
}
}.environmentObject(data)
}
}
第二视图
import SwiftUI
struct view2: View {
var data:Pessoa
var body: some View {
Button(action: {
self.data.data[0] = "New btn Text"
}){
Text("Edit Btn Texr")
}.environmentObject(data)
}
}
佩索阿级
class Pessoa:ObservableObject {
var data:NSMutableArray
init() {
self.data = NSMutableArray()
self.data.add("Btn")
}
}
从第二视图返回时如何更新主视图。
是的,我需要传递对象或至少传递数组。
主要思想是这样的结构:
V1-> v2-> V3
如果我在V3中对类的某些参数进行了更改,则如何将该更改传播(在布局中)到v2和v1
答案 0 :(得分:1)
只是让您开始运行,您可以使用@Published
属性包装器,对于您的示例,您实际上不需要@EnvironmentObject
。您可以改用@ObservedObject
...
class Pessoa: ObservableObject {
@Published var data: Array<String>
init() {
self.data = Array()
self.data.append("Btn")
}
}
struct view2: View {
var data: Pessoa
var body: some View {
Button(action: {
self.data.data[0] = "New btn Text"
}){
Text("Edit Btn Texr")
}
}
}
struct ContentView: View {
@ObservedObject var data = Pessoa()
var body: some View {
NavigationView{
VStack{
NavigationLink(destination:view2(data: data)){
Text(data.data.first ?? "N/A")
}
}
}
}
}
但是您应该检查Joakim的链接...