首页 > 解决方案 > 在 SwiftUI `DatePicker` 中点击日期时如何捕获?

问题描述

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

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

在此处输入图像描述

标签: iosswiftswiftui

解决方案


SwiftUI 2

您可以使用onChange

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

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)
                }
        }
    }
}

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


推荐阅读