SwiftUI에서 .onChange로 두 개의 값을 감지하는 방법에 대해 알아보자

John Jeonguk Hur·2023년 3월 27일
0

.onChange 메서드에서는 현재로써는 하나의 프로퍼티에 대해서만 감시할 수 있습니다. 두 개 이상의 프로퍼티를 감시해야 할 경우, Combine 프레임워크에서 제공하는 연산자(ex. zip)를 사용하거나, 하나의 프로퍼티의 값이 변경될 때 두 개 이상의 프로퍼티에 대해서 업데이트를 수행하는 메서드를 구현하는 것이 좋습니다.

struct ContentView: View {
    @State var name: String = ""
    @State var age: Int = 0
    
    var body: some View {
        VStack {
            TextField("Enter name", text: $name)
            Text("Name: \(name)")
            
            Stepper("Enter age", value: $age)
            Text("Age: \(age)")
        }
        .onChange(of: (name, age)) { newValue in
            print("Name: \(newValue.0), Age: \(newValue.1)")
        }
    }
}

위 예시에서는 name과 age 변수 모두에 대한 변경 사항을 감시하며, 두 변수 중 하나라도 변경될 때마다 실행되는 onChange 클로저에서 두 값을 모두 출력하고 있습니다. onChange 클로저에서 튜플을 사용하여 두 값을 모두 가져오도록 구현했습니다.

profile
Hi, I'm an iOS Developer. I will archive the minor details.

0개의 댓글