티스토리 뷰
728x90
반응형
Preferences 는 서브뷰가 자신을 감싸는 컨테이너에게 configuration 정보를 알려줄 수 있는 방법이다.
많은 built-in modifier 에서 이 방식을 사용하고 있다. (ex. navigationTitle, colorScheme)
쉽게 말하면..
뷰 하이어러키에서 하위 뷰가 상위뷰로 데이터를 간편하게 전달할 수 있는 방식이고
앱의 전역적인 설정을 전달할 때 주로 사용한다.
예를들어 앱 설정 페이지의 깊숙한 곳에 앱 전체의 key color 를 세팅하는 뷰가 있다고 해보자
1) PreferenceKey 를 정의한다
2) 하위뷰에서 preference(key:value:) 를 호출해서 preference 에 대한 value 를 세팅한다.
3) 상위뷰는 해당 키를 알면, onPreferenceChange(_:perform:) 를 통해 value 변화를 감지할 수 있다.
뷰 하이어러키가 얼마나 깊든 상관없이, 위의 세가지 STEP 만 해주면
깔끔하게 데이터를 위로 전달할 수 있는 것이다.
또한 PreferenceKey > reduce 의 accumulated 속성을 활용하면
이런 재밌는 예제도 작성할 수 있다. (예제는 여기서 참고함)
반응형
'🍏 > SwiftUI + Combine' 카테고리의 다른 글
[SwiftUI] scrollClipDisabled (0) | 2024.08.12 |
---|---|
[Combine] ConnectablePublisher (0) | 2024.08.04 |
[SwiftUI] animation(_:body:) 로 돌발애니메이션 막기 (1) | 2023.11.30 |
[SwiftUI] Drawing Curved Path with Animation (2) | 2023.10.29 |
[SwiftUI] @Observable 매크로 (2) (0) | 2023.07.31 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- ribs
- github actions
- Django Firebase Cloud Messaging
- Flutter getter setter
- Watch App for iOS App vs Watch App
- METAL
- Dart Factory
- Flutter Spacer
- flutter dynamic link
- Django FCM
- drf custom error
- 플러터 싱글톤
- DRF APIException
- flutter deep link
- Sketch 누끼
- flutter build mode
- flutter 앱 출시
- Django Heroku Scheduler
- 구글 Geocoding API
- Flutter 로딩
- Flutter Text Gradient
- PencilKit
- ipad multitasking
- 플러터 얼럿
- 장고 URL querystring
- 장고 Custom Management Command
- cocoapod
- SerializerMethodField
- Python Type Hint
- Flutter Clipboard
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함