Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SwiftUIにおけるPreferenceの基礎概念
Search
Kota Minato
May 21, 2025
Technology
0
140
SwiftUIにおけるPreferenceの基礎概念
Kota Minato
May 21, 2025
Tweet
Share
Other Decks in Technology
See All in Technology
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
410
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
2.2k
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
210
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
130
20251222_サンフランシスコサバイバル術
ponponmikankan
2
140
AI with TiDD
shiraji
1
280
M&Aで拡大し続けるGENDAのデータ活用を促すためのDatabricks権限管理 / AEON TECH HUB #22
genda
0
240
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Microsoft Agent Frameworkの可観測性
tomokusaba
1
110
AI との良い付き合い方を僕らは誰も知らない
asei
0
260
20251203_AIxIoTビジネス共創ラボ_第4回勉強会_BP山崎.pdf
iotcomjpadmin
0
140
100以上の新規コネクタ提供を可能にしたアーキテクチャ
ooyukioo
0
250
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Marketing to machines
jonoalderson
1
4.3k
Accessibility Awareness
sabderemane
0
24
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
370
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
120
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
57
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
WENDY [Excerpt]
tessaabrams
8
35k
New Earth Scene 8
popppiees
0
1.2k
Crafting Experiences
bethany
0
22
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.1k
Transcript
© 2025 Wantedly, Inc. SwiftUIにおける Preferenceの基礎概念 Mobile勉強会#20 ウォンテッドリー×チームラボ×Sansan May.21 2025
- kota minato
© 2025 Wantedly, Inc. 自己紹介
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. Preferenceとはなにか? ずばり、SwiftUIにおいて、子Viewから親Viewへ値を伝達する仕組み 通常データは親Viewから子Viewへ流れるがPreferenceを用いると子Viewから親Viewへの一方通行 のデータの受け渡しが可能になる
© 2025 Wantedly, Inc. どういったときにPreferenceを使うのか? レイアウト情報やサイズ情報を親Viewに 伝える必要がある場合に有用 もっと具体的には ? ScrollView内の子Viewの位置を取得し、親Viewで制御し
たい場合など
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. Binding vs Environment vs Preference Binding、Environment、Preferenceを比較してみる
@Environmentは上位View→下位Viewへの一方向の値注入 (広い範囲で共通の値を共有 ) @Bindingは親View→子Viewへの双方向の値注入 (データの保有者は親 View) Preferenceは子View→親Viewへの一方向の値注入 データの矢印の向きが異なります!
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. Wantedlyでの活用事例 下スクロールを検知でボタンを非表示にしてほしい!
© 2025 Wantedly, Inc. Wantedlyでの活用事例 実装方針は子Viewのスクロールを検知して親 Viewでボタン を非表示にする処理を行おう! でもどうやって子Viewから親Viewに通知しよう☹ 画面構成としては親Viewの中に子Viewが入っている!
© 2025 Wantedly, Inc. Wantedlyでの活用事例 Preference
© 2025 Wantedly, Inc. どうやって実装するのか PreferencesKeyに準拠したstructを作成 • PreferencesKeyに準拠するために必要なのはdefaultValue とreduce。 •
defaultValue = 何も入れなかったときの値 • reduce = 子Viewが入れた値を親Viewが受け取るときの変 換処理を書く 今回はOffSetを常に更新して取得したかったので Valueに対してnextValueを加算していま す。
© 2025 Wantedly, Inc. どうやって実装するのか • .preference(key: ScrollOffset.self, value: 値
) 子Viewから親Viewへ値を流す ※ 画面に影響を与えないようにColor.Clearを使用して値を取得します
© 2025 Wantedly, Inc. どうやって実装するのか 親Viewで値を受け取る ボタン非表示アニメーションを追加 (詳細は割愛) • .onPreferenceChange(ScrollOffset.self
) {}
© 2025 Wantedly, Inc. Wantedlyでの活用事例 うまくできた🎉
© 2025 Wantedly, Inc. まとめ • PreferenceはViewの子から親に値を渡す仕組み • PreferenceKeyを実装することによって子 View側で値を入れ親側で
.onPreferenceChengeで受け取 ることができる
© 2025 Wantedly, Inc. ご清聴ありがとうございまし た!