#swift #swiftui #swiftui-environment
#swift #swiftui #swiftui-environment
Вопрос:
У меня есть этот код:
Основное представление
import SwiftUI
struct ContentView: View {
@EnvironmentObject var data:Pessoa
var body: some View {
Navi&ationView{
VStack{
Navi&ationLink(destination:view2(data: data)){
Text(data.data.firstObject as! Strin&)
}
}
}.environmentObject(data)
}
}
2-й вид
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)
}
}
Класс Pessoa
class Pessoa:ObservableObject {
var data:NSMutableArray
init() {
self.data = NSMutableArray()
self.data.add("Btn")
}
}
Как я могу обновить основное представление при возврате из 2-го представления.
Да, мне нужно передать объект или, по крайней мере, массив.
Основная идея заключается в структуре, подобной:
V1 -&&t; v2 -&&t; V3
если я внесу изменение в какой-либо параметр класса в версии V3, как я могу распространить (в макете) это изменение на версии v2 и v1
Ответ №1:
Просто чтобы запустить вас, вы могли бы использовать @Published
оболочку свойств, которая для вашего примера вам на самом деле не нужна @EnvironmentObject
. Вместо этого вы можете использовать @ObservedObject
…
class Pessoa: ObservableObject {
@Published var data: Array<Strin&&&t;
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 {
Navi&ationView{
VStack{
Navi&ationLink(destination:view2(data: data)){
Text(data.data.first ?? "N/A")
}
}
}
}
}
Но вам следует проверить ссылку Joakim…