[SwiftUI] 상태 프로퍼티(State Property)

2024. 3. 19. 23:36·Apple/SwiftUI
728x90
반응형

안녕하세요! 피피아노입니다🎵

 

이번 포스팅에서는 SwiftUI의 상태 프로퍼티(State Property)에 대해서 정리해보도록 하겠습니다.

 

서론

SwiftUI는 앱 개발에 있어서 데이터 중심의 접근 방식을 선호합니다.

 

이 방식에서는, 사용자 인터페이스의 각 뷰가 기본 데이터가 변할 때마다 별도의 업데이트 코드를 작성하지 않아도 자동으로 갱신되는 특성을 가지고 있습니다. 이는 데이터와 뷰 사이에 마련된 게시자(publisher)와 구독자(subscriber)의 관계를 통해 가능해집니다.

 

SwiftUI는 이러한 데이터 주도적인 사용자 인터페이스를 구현하기 위해 여러 도구를 제공합니다. 상태 프로퍼티(State properties), 관찰 가능한 객체(Observable objects), 상태 객체(State objects), 그리고 환경 객체(Environment objects)가 그 예입니다. 이들은 모두 사용자 인터페이스의 외형과 작동 방식을 결정하는 상태 정보를 관리합니다.

 

SwiftUI에서는 뷰를 구성할 때, 그 뷰를 직접적으로 업데이트하지 않습니다. 대신, 뷰와 연결된 상태 객체가 시간이 흐름에 따라 변경될 때, 해당 상태의 변화에 따라 뷰가 자동적으로 갱신됩니다.

 

상태 프로퍼티(State Property)란?

상태 프로퍼티(State Property)는 상태에 대한 가장 기본적인 형태이며, 뷰의 내부 상태를 관리하는 핵심적인 도구입니다. 상태 프로퍼티는 사용자 인터페이스의 특정 부분이 데이터 변화에 따라 업데이트 되어야 할 때 사용됩니다.

 

상태 프로퍼티는 String이나 Int처럼 간단한 데이터 타입을 저장하기 위해 사용됩니다.

 

상태 프로퍼티의 정의 방법

상태 프로퍼티는 @State 프로퍼티 래퍼를 사용하여 선언됩니다. 이는 뷰 내부에서 관리되어야 하는 값에 사용됩니다.

 

예를 들어, 사용자 입력을 저장하는 변수나 현재 선택된 탭과 같은 UI 상태를 관리할 때 사용할 수 있습니다.

@State private var isToggled = false

@State 변수는 주로 해당 뷰 내에서만 관리되고 업데이트되는 값에 사용됩니다. 값이 변경될 때마다 뷰가 자동으로 업데이트되어 사용자 인터페이스를 최신 상태로 반영하게 만들어주게 되죠.

 

상태 프로퍼티를 사용하면 데이터가 변경될 때 SwiftUI가 자동으로 뷰를 업데이트하는데, 이러한 방식은 선언적 UI 접근 방식의 핵심입니다.

 

상태 프로퍼티의 사용 예시

상태 프로퍼티의 사용 예시를 살펴보기 위해 사용자가 토클을 조작할 때마다 스위치가 켜졌다, 꺼졌다를 반복하는 코드를 한번 작성해보겠습니다!

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

    var body: some View {
        Toggle(isOn: $isToggled) {
            Text("스위치 상태: \(isToggled ? "켜짐" : "꺼짐")")
        }
    }
}

위 코드를 살펴보면 isToggled 상태는 사용자가 토글을 조작할 때마다 업데이트됩니다. @State 프로퍼티 래퍼 덕분에, 이 값의 변화가 있을 때마다 ToggleView의 body가 다시 계산되어 화면에 반영됩니다.

 

주의점

상태 프로퍼티는 해당 뷰의 내부 상태를 위한 것이므로, 뷰 외부에서 직접 접근하거나 수정하는 것은 권장되지 않습니다. 외부 데이터를 뷰에 전달할 필요가 있다면, 다른 데이터 흐름 메커니즘(예: @Binding, @ObservedObject, @EnvironmentObject 등)을 사용하는 것이 좋습니다.

 

@State는 값 유형(Value Types)에 가장 적합합니다. 참조 유형(Reference Types)을 사용해야 할 경우, @ObservedObject나 @StateObject와 같은 다른 프로퍼티 래퍼를 고려하는 것이 좋습니다.

 

Observable 객체와 State 객체, 그리고 Environment 객체는 다음 포스팅에서 정리해보도록 하겠습니다!

 

 

감사합니다!


잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'Apple > SwiftUI' 카테고리의 다른 글

[SwiftUI] List에 대한 기본기 이해하기  (1) 2024.05.06
[SwiftUI] 애플은 왜 SwiftUI를 출시 했을까?  (0) 2024.04.01
[SwiftUI] SwiftUI 스택 정렬(VStack, HStack, ZStack)과 정렬 가이드  (0) 2024.03.14
[SwiftUI] SwiftUI 뷰(View) 이해하기  (0) 2024.03.01
[SwiftUI] Spacer 이해하고 응용해보기  (0) 2024.01.16
'Apple/SwiftUI' 카테고리의 다른 글
  • [SwiftUI] List에 대한 기본기 이해하기
  • [SwiftUI] 애플은 왜 SwiftUI를 출시 했을까?
  • [SwiftUI] SwiftUI 스택 정렬(VStack, HStack, ZStack)과 정렬 가이드
  • [SwiftUI] SwiftUI 뷰(View) 이해하기
P_Piano
P_Piano
20대의 한 페이지를 꽃갈피 하다.
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (199)
      • Apple (117)
        • iOS (21)
        • visionOS (4)
        • Swift (64)
        • UIKit (2)
        • SwiftUI (20)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    함수
    프로세스
    프로퍼티 래퍼
    Optional
    비동기
    변수
    제어문
    메서드
    SWIFT
    combine
    옵셔널
    visionOS
    연산자
    배열
    Vision Pro
    swiftUI
    클래스
    UIKit
    네트워크
    ios
    티스토리챌린지
    Xcode
    Initializers
    운영체제
    자바스크립트
    이니셜라이저
    코딩테스트
    디자인패턴
    스위프트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[SwiftUI] 상태 프로퍼티(State Property)
상단으로

티스토리툴바