Post

@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.