質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1544閲覧

【swiftUI】ObservedObjectの値を変更してもViewが更新されない

Kake_puro

総合スコア1

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/10/26 12:59

編集2021/10/26 13:00

お世話になっております。
現在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("文字の変更") } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

__k_san__

2021/10/27 10:24

質問内に掲載されたコードをそのままコピーして実行してみたところ、私の手元では問題なく表示が更新されました。 ※Xcode 13.0, iOSシミュレータ(iPhone 13 Pro, iOS 15.0)で確認しています。 以下についてご確認の上でその結果を教えていただけますと、もしかしたらお力になれるかもしれません。 ・他の処理を追加することなく、質問に掲載されたコードそのままを実行(プレビュー上ではなく、実際にアプリをビルド実行してみる)しても、表示が更新されないのでしょうか? ・確認時のXcodeのバージョン、iOSデバイスの機種とOSバージョンは何ですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問