-
StateObjectSwiftUI 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