在 SwiftUI `DatePicker` 中点击日期时如何捕获?

Mar*_*adé 1 ios swift swiftui

我想在用户从 DatePicker 中选择新日期时发送网络请求。我如何捕获该事件?

onChange 在 iOS 14 上执行此操作。仍然没有找到 iOS 13

在此处输入图片说明

paw*_*222 6

SwiftUI 2

您可以使用onChange

struct ContentView: View {
    @State var selectedDate = Date()
    
    var body: some View {
        Form {
            DatePicker("Date", selection: $selectedDate)
                .onChange(of: selectedDate) {
                    print($0)
                }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

SwiftUI 1

使用onReceive来代替:

import Combine
import SwiftUI

struct ContentView: View {
    @State var selectedDate = Date()
    
    var body: some View {
        Form {
            DatePicker("Date", selection: $selectedDate)
                .onReceive(Just(selectedDate)) {
                    print($0)
                }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,onReceive初始化视图时也会触发。