【Swift UI】Viewを再描画する方法!idモディファイアの使い方
この記事からわかること
- Swift UIでViewが再描画されない場合の解決方法
- idモディファイアの使い方
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.0.1
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.1
Swift UIでViewが再描画されない
Swift UIでDGChartsを使用してグラフを実装していた際にグラフのデータを更新してもビューが再描画されない場面がありました。詳しい仕組みは分かりませんがキャッシュが残って表示されないような感じでしょうか。
おすすめ記事:【Swift/UIKit】Charts(DGCharts)の使い方!折れ線グラフの実装方法
MyBarChartView(source: repository.data)
.frame(width: 200, height: 300)
今回はUIKitで使用するDGChartsをSwift UIで使用するViewに実装して使用していた際にrepository.data
が変化したり、画面を遷移してもグラフが再描画されませんでした。
idモディファイアで再描画される
再描画されるようにするためにid
モディファイアを付与して一意となるようにUUID
を渡すことでキャッシュがなくなり都度再描画されるようになりました。
MyBarChartView(source: repository.data)
.frame(width: 200, height: 300)
.id(UUID())
id
モディファイアの説明を見ると役割はビューのIDを指定されたプロキシ値にバインドすることのようです。よく分かりません。しかしその下に以下のように記述されていました。
パラメーターで指定されたプロキシ値がid変更されると、ビューの ID (状態など) がリセットされます。
id値を常に一意のものにしておくことでViewの状態が常にリセットされ再描画されるようです。
ご覧いただきありがとうございました。