본문 바로가기
Dev/iOS

[SwiftUI] iOS 13에서 onChange 사용하기

by steady.dev 2021. 11. 1.

onChange 식별자는 iOS 14에서 사용가능하다.

 

iOS13에서 onChange 를 사용하기 위해서는 아래 2가지 방법으로 사용할 수 있다.

  1. iOS 13에서 제공하는 onReceive 이용
    1. 더보기
      import SwiftUI
      import Combine
      
      struct ContentView: View {
      	@State var currentTab: Int
          var body: some View {
             	ScrollView {
              	
              }
              .onReceive(Just(currentTab), perform: { value in
                  print(value)
              })
          }
      }
  2. View 를 확장해서 이용
    1. 더보기
      import SwiftUI
      import Combine
      
      extension View {
          @ViewBuilder func valueChanged<T: Equatable>(value: T, onChange: @escaping (T) -> Void) -> some View {
              if #available(iOS 14.0, *) {
                  self.onChange(of: value, perform: onChange)
              } else {
                  self.onReceive(Just(value)) { (value) in
                      onChange(value)
                  }
              }
          }
      }

 

댓글