반응형
기존에는 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)")
}
}
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' 카테고리의 다른 글
[SwiftUI] Animation 모음 - 좌우로 흔들리는 Animation (0) | 2024.09.10 |
---|---|
[SwiftUI] Animation 모음 - (하트 모양 좋아요 버튼) (0) | 2024.09.10 |
[SwiftUI] 프로퍼티 래퍼 (Property Wrapper) (0) | 2024.09.09 |
[SwiftUI] QR 코드 만들기 (38) | 2024.05.29 |
하위 뷰에 Localizable.xcstring 적용하기 (23) | 2024.05.28 |