お世話になっております。
現在iOSアプリ開発を勉強しているのですが、下記現象に苦戦しており、みなさまの知恵をお借りしたく。
##実現したいこと
ObservableObjectクラスの変数の値が変更された時にViewの更新をしたい。
##現状
現在私が行っていることを簡単に記述すると、下記コードのようなっており、関数を使ってクラスの変数の値を変えて、その値をViewに反映させようとしています。
しかし、実際に動かしてみても値の変更はViewには反映されません。変数の値をログで確認したところ、値は変わっておりますがViewには反映されていない状態です。
なぜこのようなことになっているのか、ご存知の方がいましたらご教授お願いいたします。
class Hoge: ObservableObject { @Published var hoge = "hoge" func huga() { //何かしらの処理 hoge = "huga" print("(hoge)") // => huga } }
struct ContentView: View { @ObservedObject var hg = Hoge() var body: some View { Text("(hg.hoge)") Button(action: { hg.huga() }) { Text("文字の変更") } } }
質問内に掲載されたコードをそのままコピーして実行してみたところ、私の手元では問題なく表示が更新されました。
※Xcode 13.0, iOSシミュレータ(iPhone 13 Pro, iOS 15.0)で確認しています。
以下についてご確認の上でその結果を教えていただけますと、もしかしたらお力になれるかもしれません。
・他の処理を追加することなく、質問に掲載されたコードそのままを実行(プレビュー上ではなく、実際にアプリをビルド実行してみる)しても、表示が更新されないのでしょうか?
・確認時のXcodeのバージョン、iOSデバイスの機種とOSバージョンは何ですか?
あなたの回答
tips
プレビュー