이번 게시글에선 SwiftUI에서 사용하는 state와 binding에 대해 알아보려합니다
SwiftUI를 사용하려면 필연적으로 만날 수밖에 없을텐데요!
State
- 뷰의 로컬 상태를 관리하는 속성
- 뷰 내부에서 변수의 상태 변화를 관리할 때 사용
- 변수 변경 시, 뷰를 다시 렌더링
- 뷰가 소멸되면 state 변수도 함께 사라짐
- 해당뷰에서만 직접 접근 가능
- 현재 뷰에 대한 UI 특정 상태를 저장하기 위해 만들어졌기에 private 사용
Binding
- 다른뷰에서 @state로 선언된 속성을 다른 뷰에서 사용할 때 사용
- $를 사용하여 binding으로 선언된 변수임을 나타냄
- 외부에서 접근해야하므로 private X
다음은 예시 코드입니다.
struct CountView: View {
@State private var count: Int = 0
var body: some View {
VStack {
Text("Count: \(count)")
CountButton(count: $count) // Binding 전달
}
}
}
struct CountButton: View {
@Binding var count: Int
var body: some View {
Button("Increase") {
count += 1
}
}
}
코드를 분석해보면
CountView는 @state로 count상태를 관리하고, CountButton은 부모뷰인 CountView에서 @binding을 통해 count를 받아옵니다.
만약 CountButton에서 버튼을 눌러 count를 변경하면, 부모뷰인 CountView의 count 상태도 업데이트 되는것이죠!!
SwiftUI에서 첫 코드를 쳤을 때, 값을 어떻게 변경해야하는지 당황했었는데요..!
이번 글에서 소개한 두 property wrapper를 사용하면 UIKit에서처럼 쉽게 값을 변경가능하더라구요
다음에는 또 다른 property wrapper에 대해 설명할 것을 기대하며..
그럼 이만~
.
.
.
.

'Swift' 카테고리의 다른 글
[iOS] About StateObject, ObservedObject (1) | 2024.09.18 |
---|---|
[iOS] About ObservedResults, ObservedRealmObject (1) | 2024.09.16 |
[iOS] About Hot & Cold Observable (1) | 2024.09.03 |
[iOS] About Calendar (1) | 2024.08.28 |
[iOS] About GCD (Grand Central Dispatch) (2) | 2024.08.24 |