ModelData 라는 데이터 모델이 있다고 가정하고 이를 Swift UI의 환경에 주입한 후, 뷰에서 이것을 사용해보기!
1. 데이터 모델 정의
먼저, ModelData라는 간단한 데이터 모델을 정의합니다.
import Foundation
import Combine
class ModelData : ObservableObject{
@Published var someData : String = "Initial Data"
}
- @Published는 데이터 모델의 특정 속성이 변경될 때, 이를 자동으로 알리고, 그 변화를 구독하는 모든 뷰를 업데이트합니다.
2. 데이터 모델을 환경에 주입합니다.
Swift UI 앱의 진입점에서 데이터 모델을 환경에 추가합니다.
import SwiftUI
@main
struct ExampleApp : App{
@StateObject private var modelData = ModelData()
var body : some Scene{
WindowGroup{
ContentView()
.environmentObject(modelData)
// modelData를 환경에 주입한다.
}
}
}
- 이렇게 되면 modelData가 변할때마다 해당 변화를 구독하는 모든 뷰를 업데이트하게 됩니다.
3. 환경에서 데이터모델을 사용합니다.
이제 ContentView에서 ModelData를 환경에서 가져와서 사용할 수 있습니다.
import SwiftUI
struct ContentView : View{
@EnvironmentObject var modelData : ModelData
// 환경에서 modelData를 가져온다.
var body : some View{
VStack{
Text("Data : \(modelData.someData)")
.padding()
Button(action : {
modelData.someData = "Updated Data"
// 버튼 클릭 시에 데이터를 업데이트 한다.
// 이것은 이 데이터를 구독하는 모든 뷰의 재 렌더링을 야기한다.
}) {
Text("Update Data")
}
}
}
}
'Ios > Swift UI' 카테고리의 다른 글
Swift UI 메서드 정리 ( 계속 추가 ) (2) | 2024.07.24 |
---|---|
이것저것 Swift 메모용(찾아갈만한게 있을 수도 있고 없을 수도 있어요) (3) | 2024.07.23 |
@Binding 과 .constant에 대해서 알아봅시다 (0) | 2024.07.22 |
키 패스 KeyPath 에 대해 알아봅시다 (2) | 2024.07.19 |
@Observable, @ObservedObject 를 알아봅시다 (0) | 2024.07.19 |