-
[SwiftUI] @EnvironmentObjectSwift/SwiftUI 2024. 1. 7. 02:37
EnvironmentObject는 언제 사용하는가?
: 여러 뷰(:기준마다 다름)에서 이용될 경우. SwiftUI에서 제공하는 속성 래퍼 중 하나로, 뷰 계층 전체에서 접근 가능한 데이터를 제공하는 데 사용, 나의 경우 3개 이상의 뷰에서 사용되면 EnvironmentObject로 생성해서 넘긴다.
EnvironmentObject를 사용하려면, 먼저 ObservableObject 프로토콜을 준수하는 클래스를 정의하고, 이 클래스의 인스턴스를 최상위 뷰에 .environmentObject(_:) 수정자를 사용하여 제공해야함.
@main struct MyApp: App { @StateObject private var modelData = ModelData() var body: some Scene { WindowGroup { ContentView() .environmentObject(modelData) } } }
[사용하는 뷰]
struct DetailView: View { @EnvironmentObject var modelData: ModelData var body: some View { // 뷰의 내용 } }
@EnvironmentObject를 사용하는 뷰가 해당 객체에 접근하지 못하면 런타임 오류가 발생하므로 주의
-> 여기서 계속 런타임 오류 발생
오류메세지: Thread 1: Fatal error: No ObservableObject of type ///View.environmentObject(_:) for may be missing as an ancestor of this view.
'Swift > SwiftUI' 카테고리의 다른 글
swiftui에서의 검색 (0) 2024.02.17 SwiftUI 애니메이션 적용 방법 (0) 2024.01.30 [SwiftUI] fullscreen으로 view 띄우기: fullScreenCover (0) 2024.01.07 [SwiftUI]연속되는 뷰 넘기는 상황에서 이미지, 텍스트의 길이가 달라져서 위치가 고정되지 않는 문제 (1) 2023.12.05 [SwiftUI] zstack button not working, ZStack에서의 버튼 동작, zIndex() (0) 2023.11.24