【Swift UI】Viewを再描画する方法!idモディファイアの使い方

この記事からわかること

  • Swift UIView再描画されない場合の解決方法
  • idモディファイア使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Swift UIでViewが再描画されない

Swift UIでDGChartsを使用してグラフを実装していた際にグラフのデータを更新してもビューが再描画されない場面がありました。詳しい仕組みは分かりませんがキャッシュが残って表示されないような感じでしょうか。

【Swift UI】Charts(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(_:)モディファイア

id値を常に一意のものにしておくことでViewの状態が常にリセットされ再描画されるようです。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index