SwiftUI | classの変数が変化したときにViewを更新する方法

変数

SwiftUIでclassの変数が変化したときにViewを更新する方法を説明する。

Swift 5.7 / Xcode 14.0 / iOS 16.0

結論

  1. classをObservableObject準拠にする。
  2. 変数に@Publishedを付ける。
  3. classのインスタンスに@ObservedObjectを付ける。

具体例

ボタンをタップすることによりclass内の変数を変更し、それに連動してViewが更新されるAppを作成する。

  1. classをObservableObject準拠にする。
  2. 変数に@Publishedを付ける。
  3. 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を更新する方法を説明した。

コメント

タイトルとURLをコピーしました