[swift] SwiftUI 뷰의 상태 변경

SwiftUI에서 뷰의 상태를 변경하려면 @State@Binding을 사용할 수 있습니다. 이러한 속성들은 값을 변경할 때 앱의 상태를 업데이트하고 UI를 다시 그리도록 트리거합니다.

@State 속성

@State 속성은 특정 뷰에서 사용되는 로컬 상태를 선언할 때 사용됩니다. 이 속성에 할당된 값이 변경되면 해당 뷰를 다시 렌더링할 수 있도록 시스템에 트리거를 걸어줍니다.

@State private var isToggled = false

위의 예제에서 isToggled는 뷰 내에서 로컬하게 관리되는 상태를 나타냅니다. 값을 변경하려면 self.isToggled = true와 같이 사용할 수 있습니다.

@Binding 속성

@Binding 속성은 다른 뷰나 모델과의 양방향 바인딩을 선언할 때 사용됩니다. 즉, 한 뷰의 상태를 다른 뷰에서 제어할 수 있도록 해줍니다.

struct ContentView: View {
    @State private var isToggled = false

    var body: some View {
        ChildView(isToggled: $isToggled)
    }
}

struct ChildView: View {
    @Binding var isToggled: Bool

    var body: some View {
        Toggle("Toggle", isOn: $isToggled)
    }
}

위의 예제에서 ChildViewContentViewisToggled 상태를 토글 스위치로 제어할 수 있습니다.

결론

SwiftUI에서 뷰의 상태를 변경하기 위해 @State@Binding을 사용할 수 있습니다. 이를 통해 로컬 상태를 관리하고 다른 뷰와의 상태를 바인딩하여 앱의 상태 변화에 대해 강력한 제어가 가능합니다.

참고 자료