티스토리 뷰
🍏/SwiftUI + Combine
[SwiftUI] 뷰의 이니셜라이저에서 @State, @Binding, @EnvironmentObject에 접근하기
eungding 2020. 8. 31. 22:17728x90
반응형
[1] @State
이니셜라이저에서 state를 초기화해주려면 underscore를 써서 접근해야한다. (출처)
struct SomeView: View {
@State var selectedIndex: Int
init() {
let selectedInde = // do something
_selectedIndex = State(initialValue: selectedIndex)
}
var body: some View {
...
}
}
[2] @Binding
바인딩도 마친가지이다. 이니셜라이저에서는 underscore를 써서 접근해야한다
struct SomeView: View {
@Binding var someValue: Int
init(someValue: Binding<Int>) {
_someValue = someValue
}
var body: some View {
...
}
}
[3] @EnvironmentObject
EnvironmentObject는 이니셜라이저에서 접근할 수 없다.
아래의 코드처럼 이니셜라이저에서 EnvironmentObject에 접근하려고 하면
EnvironmentObject가 없다고 크래쉬가 난다.
struct SomeView: View {
@EnvironmentObject var someSettings: SomeSettings
init() {
print(someSettings)
}
var body: some View {
...
}
}
그 이유는 아주 간단한데, (출처)
object 초기화가 끝난 다음에 EnvironmentObject를 inject해주기 때문이다.
그래서 초기화 단계에서 EnvironmentObject에 접근하면 당연히 없다고 크래쉬가 난다.
이니셜라이저에서 접근하지말고 플래그 둬서 onAppear해서 한번만 접근하게 해주는 등의 방법으로 대체할 수 있겠다-!
반응형
'🍏 > SwiftUI + Combine' 카테고리의 다른 글
[SwiftUI] modifier의 순서를 고려하자 (특히 frame) (0) | 2020.09.06 |
---|---|
[Combine] Future (0) | 2020.09.03 |
[SwiftUI] Multi-platform App 만들기 - 프로젝트 세팅 (2) | 2020.08.06 |
[SwiftUI] ZStack 실전 예제들 (2) | 2020.05.16 |
[Combine] Cancellable과 AnyCancellable (6) | 2019.06.28 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- flutter build mode
- 장고 Custom Management Command
- PencilKit
- Sketch 누끼
- DRF APIException
- flutter dynamic link
- SerializerMethodField
- Django FCM
- flutter deep link
- 플러터 얼럿
- 장고 URL querystring
- Flutter getter setter
- Dart Factory
- 플러터 싱글톤
- flutter 앱 출시
- Watch App for iOS App vs Watch App
- 구글 Geocoding API
- METAL
- github actions
- ribs
- ipad multitasking
- Flutter 로딩
- drf custom error
- Django Heroku Scheduler
- cocoapod
- Python Type Hint
- Flutter Clipboard
- Flutter Text Gradient
- Django Firebase Cloud Messaging
- Flutter Spacer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함