@State란
@State란
SwiftUI의 @State
– 뷰의 로컬 상태 관리 속성 래퍼
개요
@State
는 SwiftUI에서 뷰 내부에서 상태를 관리하는 가장 기본적인 속성 래퍼다. 뷰가 소유하고 직접 변경할 수 있는 값이며, 상태가 변하면 뷰가 자동으로 다시 그려진다.
왜 필요한가?
SwiftUI는 선언형 UI 프레임워크로, 상태가 변경되면 UI를 업데이트한다. 하지만 뷰 내부에서 변경 가능한 상태를 저장할 변수가 필요하다. 이때 @State
를 사용해 상태 변수를 선언한다.
사용법
1
2
3
4
5
6
7
8
9
10
11
12
struct CounterView: View {
@State private var count: Int = 0 // 상태 변수 선언
var body: some View {
VStack {
Text("Count: \(count)")
Button("Increase") {
count += 1 // 상태 변경
}
}
}
}
@State
변수는 뷰가 소유하는 로컬 상태다.- 변수 값이 변경되면 뷰가 다시 렌더링된다.
private
으로 선언하는 것이 일반적이다.
특징
- 로컬 상태 관리: 뷰 내에서만 상태가 유효하며, 외부 뷰에서는 직접 접근 불가.
- 값 타입 기반: 상태 변경 시 뷰가 다시 그려진다.
- 바인딩 가능: 다른 뷰에 상태를 전달할 때
$
를 붙여 바인딩으로 넘길 수 있다.
실전 예시
1
2
3
4
5
6
7
8
struct ToggleView: View {
@State private var isOn: Bool = false
var body: some View {
Toggle("Switch", isOn: $isOn)
.padding()
}
}
Toggle
은 바인딩을 요구하므로@State
앞에$
를 붙여 바인딩을 넘긴다.- 토글 스위치를 켜고 끌 때
isOn
상태가 변경되며 뷰가 갱신된다.
정리
@State
는 뷰가 직접 소유하고 관리하는 상태 변수 선언에 사용한다.- 상태가 변하면 SwiftUI가 자동으로 뷰를 갱신해 UI 일관성을 유지한다.
- 복잡한 상태 관리가 필요하면
@Binding
,@StateObject
,@ObservedObject
와 함께 사용한다.
This post is licensed under CC BY 4.0 by the author.