回答編集履歴

1

@StateObject のついていないクラスが、グローバル変数に宣言できる点を追記しました。

2022/12/21 05:42

投稿

uni2
uni2

スコア256

test CHANGED
@@ -42,3 +42,44 @@
42
42
  }
43
43
  }
44
44
  ```
45
+
46
+ classModelTwo は @StateObject がついていないため
47
+ グローバル変数にすることでショートカットすることが出来ます。
48
+
49
+ ```SwiftUI
50
+ import SwiftUI
51
+
52
+ var classModelTwo = ClassModelTwo()
53
+
54
+ struct ContentView: View {
55
+ @StateObject var classModelOne = ClassModelOne()
56
+
57
+ var body: some View {
58
+ VStack {
59
+ Toggle("", isOn: $classModelOne.flag)
60
+ .labelsHidden()
61
+ .onChange(of: classModelOne.flag) { newValue in
62
+ classModelOne.testFlag()
63
+ }
64
+ Text("Hello, world!")
65
+ }
66
+ .padding()
67
+ .environmentObject(classModelOne)
68
+ }
69
+ }
70
+
71
+ class ClassModelOne: ObservableObject {
72
+ @Published var flag = true
73
+ func testFlag() {
74
+ // ClassModelTwoのtestFlagを実行したい
75
+ classModelTwo.testFlag(classModelOne: self)
76
+ }
77
+
78
+ }
79
+
80
+ class ClassModelTwo: NSObject {
81
+ func testFlag(classModelOne: ClassModelOne) {
82
+ print(classModelOne.flag)
83
+ }
84
+ }
85
+ ```