기존에는 Toggle, Text Filed, Picker와 같은 기본 제공하는 View에서 Binding 값들이 변경되는 것을 탐지 할 수 없었다.
iOS 14에서는 다음과 같은 함수를 제공해주고 있어서 이를 활용하면 된다.
@State private var isOn = false
var body: some View {
Toggle("제목", isOn: $isOn)
.onChange(of: isOn) { value in
print("\(value)")
}
}
iOS13+
iOS 13에서는 onChange 함수가 없기 때문에 Binding 을 확장해서 사용하면 된다.
extension Binding {
func didSet(execute: @escaping (Value) -> Void) -> Binding {
return Binding(
get: { self.wrappedValue },
set: {
self.wrappedValue = $0
execute($0)
}
)
}
}
사용시
@State var isOn: Bool = false
Toggle("제목", isOn: $isOn.didSet { (state) in
print(state)
})
출처
'Dev > iOS' 카테고리의 다른 글
[SwiftUI] iOS 13 -> iOS 14 변경점 (0) | 2021.10.29 |
---|---|
[SwiftUI] 신규 SwiftUI 프로젝트에서 AppDelegate, SceneDelegate 사용하기 (0) | 2021.10.29 |
[SwiftUI] LifeCycle 변경하기 (SwiftUIApp -> UIKit App delegate) (0) | 2021.08.16 |
[SwiftUI] Custom PageView 사용하기 (0) | 2021.08.16 |
[SwiftUI] WKWebView 사용하기 (0) | 2021.08.07 |
댓글