Jupyo's Daily Story
@State 본문
@State
는 SwiftUI에서 상태 관리를 위해 사용하는 프로퍼티 래퍼입니다. SwiftUI는 선언적 UI 프레임워크로, UI를 상태 기반으로 구성합니다. @State
는 이 상태를 관리하는 데 중요한 역할을 합니다. 자세히 살펴보면:
기본 개념
상태(State): 앱의 UI와 상호작용을 통해 변할 수 있는 데이터입니다.
@State
를 사용하면 이 데이터를 관리하고, 데이터가 변경될 때 UI가 자동으로 업데이트됩니다.프로퍼티 래퍼(Property Wrapper):
@State
는 프로퍼티 래퍼로, 변수에 상태 관리를 부여합니다. 이 래퍼는 SwiftUI가 해당 변수를 감시하고, 값이 변경될 때 UI를 다시 렌더링하도록 돕습니다.
사용 방법
선언:
@State
는struct
내부에서 선언됩니다. 일반적으로View
구조체의 프로퍼티로 사용됩니다.struct ContentView: View { @State private var count = 0 var body: some View { VStack { Text("Count: \(count)") Button(action: { count += 1 }) { Text("Increment") } } } }
자동 업데이트:
@State
로 선언된 변수의 값이 변경되면, SwiftUI는 자동으로 해당 뷰를 재렌더링합니다. 위의 예에서 버튼을 누르면count
값이 증가하고,Text
뷰가 업데이트됩니다.제한사항:
@State
는View
내부에서만 사용할 수 있습니다. 다른 뷰에 전달하려면@Binding
또는ObservableObject
를 사용해야 합니다.@State
로 선언된 변수는 구조체가 소유하며, 다른 뷰에서 직접 접근할 수 없습니다.
@Binding
과의 차이점
@Binding
은 부모 뷰에서 상태를 자식 뷰에 전달할 때 사용됩니다.@Binding
은 상태를 공유할 수 있게 하여, 자식 뷰에서 상태를 변경하면 부모 뷰의 상태도 업데이트됩니다.struct ParentView: View { @State private var isToggled = false var body: some View { ToggleView(isToggled: $isToggled) } } struct ToggleView: View { @Binding var isToggled: Bool var body: some View { Toggle(isOn: $isToggled) { Text("Toggle me!") } } }
결론
@State
는 SwiftUI의 상태 관리에서 핵심적인 역할을 합니다. 상태 변화에 따라 UI를 자동으로 업데이트할 수 있게 해주며, 선언적인 UI 프로그래밍 모델과 잘 어울립니다. @State
를 활용하여 상태 기반의 반응형 UI를 쉽게 구현할 수 있습니다.
'SwiftUI' 카테고리의 다른 글
@StateObject (0) | 2020.10.15 |
---|---|
ObservableObject (0) | 2020.10.15 |
@EnvironmentObject (0) | 2020.10.14 |
Spacing & Spacer (0) | 2020.10.13 |
ForEach (0) | 2020.10.13 |