ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • StateObject
    SwiftUI 2023. 1. 28. 14:01
    ObservableObject를 인스턴스화 하는 프로퍼티 래퍼

     

    SwiftUI 는 각 객체가 생성될 때 한 번만 새로운 객체를 생성하고,
    ObservableObject 의 @Published 프로퍼티가 바뀔 때 관련 뷰를 업데이트 합니다.

    아래와 같이 사용할 수 있습니다.

    class Book: ObservableObject {
        @Published var title = "Great Expectations"
    }
    
    struct BookView: View {
        @StateObject var book: Book
        
        var body: some View {
            Text(book.title)
        }
    }

    state object를 ObservedObject attribute 를 갖는 프로퍼티로 넘길 수도 있지만,
    environmentObject(_:) modifier를 사용해 뷰 환경 객체로 추가할 수도 있습니다.

    프로퍼티로 넘기기

    class Book: ObservableObject {
        @Published var title = "Great Expectations"
    }
    
    struct BookView: View {
        @StateObject var book: Book
        
        var body: some View {
            BookTitle(book: book)
        }
    }
    
    struct BookTitle: View {
        @StateObject var book: Book
        
        var body: some View {
            Text(book.title)
        }
    }

     

    environmentObject 활용해서 전달

    class Book: ObservableObject {
        @Published var title = "Great Expectations"
    }
    
    struct BookView: View {
        @StateObject var book: Book
        
        var body: some View {
            BookTitle()
                .environmentObject(book)
        }
    }
    
    struct BookTitle: View {
        @EnvironmentObject var book: Book
        
        var body: some View {
            Text(book.title)
        }
    }

    'SwiftUI' 카테고리의 다른 글

    [SwiftUI] HStack 하위 요소 > 최대 높이로 동일하게 맞추기  (0) 2023.05.22
    task(priority:_:)  (0) 2023.01.28
    ObservedObject  (0) 2023.01.28
    ObservableObject  (0) 2023.01.28
    [SwiftUI] Model data 앱 데이터 관리하기  (0) 2022.11.25

    댓글

Designed by Tistory.