根据他的 child 中所做的更改更改 swiftUI 视图中的值
change a value inside a swiftUI view based in a change made in his child
我有这个代码:
主视图
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佩索阿
class Pessoa:ObservableObject {
var data:NSMutableArray
init() {
self.data = NSMutableArray()
self.data.add("Btn")
}
}
当我 return 形成第二视图时如何更新主视图。
是的,我需要传递 object 或至少传递数组。
主要思想的结构如下:
V1 -> v2 -> V3
如果我在 V3 中更改 class 的某些参数,我如何将此更改(在布局中)传播到 v2 和 v1
只是为了让你起床 运行,你可以使用 @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 的 link...
我有这个代码:
主视图
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佩索阿
class Pessoa:ObservableObject {
var data:NSMutableArray
init() {
self.data = NSMutableArray()
self.data.add("Btn")
}
}
当我 return 形成第二视图时如何更新主视图。
是的,我需要传递 object 或至少传递数组。
主要思想的结构如下:
V1 -> v2 -> V3
如果我在 V3 中更改 class 的某些参数,我如何将此更改(在布局中)传播到 v2 和 v1
只是为了让你起床 运行,你可以使用 @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 的 link...