SwiftUIでclassの変数が変化したときにViewを更新する方法を説明する。
Swift 5.7 / Xcode 14.0 / iOS 16.0
結論
- classをObservableObject準拠にする。
- 変数に@Publishedを付ける。
- classのインスタンスに@ObservedObjectを付ける。
具体例
ボタンをタップすることによりclass内の変数を変更し、それに連動してViewが更新されるAppを作成する。
- classをObservableObject準拠にする。
- 変数に@Publishedを付ける。
- classのインスタンスに@ObservedObjectを付ける。
import SwiftUI
struct ContentView: View {
@ObservedObject var インスタンス = クラス() // ? 3
var body: some View {
Button("ここをタップ") {
インスタンス.変数.toggle()
}
.buttonStyle(.borderedProminent)
Text(String(インスタンス.変数))
}
}
class クラス: ObservableObject { // ? 1
@Published var 変数: Bool = false // ? 2
}
まとめ
SwiftUIでclassの変数が変化したときにViewを更新する方法を説明した。
コメント