これは私の場合の簡単な例です。@ObservedObject ビューモデル (Object1) があり、プロパティ (Object2) を別のビュー (View2) に渡します。ビュー 2 の値を変更し、ビュー 1 に戻ったときに、値も更新されることを望みます。最善の解決策は何ですか?
この例では、青い数字を押すと、黒い数字も更新されます。実際、「表示」ボタンを押した後に黒い数字が更新される理由はわかりません。お役に立てれば幸いです。ありがとう。
import SwiftUI
import Combine
struct ContentView: View {
@ObservedObject var object1: Object1 = Object1(ob: Object2(n: 0))
@State var isShow = false
var body: some View {
NavigationView {
VStack {
Text("\(object1.object2.n)")
//NavigationLink(destination: View2(object2: object1.object2)) {
// Text("Go to view 2")
//}
View2(object2: object1.object2)
Button {
isShow = true
} label: {
Text("Show")
}.alert(isPresented: $isShow, content: {
Alert(title: Text("\(object1.object2.n)"))
})
}
}
}
}
struct View2: View {
@ObservedObject var object2: Object2
var body: some View {
Button {
object2.n += 1
} label: {
Text("\(object2.n)")
}
}
}
class Object1: ObservableObject {
@Published var object2: Object2
init(ob: Object2) {
self.object2 = ob
}
}
class Object2: ObservableObject {
@Published var n: Int = 0
init(n: Int) {
self.n = n
}
}