Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I capture when a date is tapped in SwiftUI `DatePicker`?

Tags:

ios

swift

swiftui

I want to send a network request whenever the user has chosen a new date from the DatePicker. How do I capture that event?

onChange does this on iOS 14. Still haven’t found iOS 13

enter image description here

like image 448
Marcus Ziadé Avatar asked Jan 22 '26 06:01

Marcus Ziadé


1 Answers

iOS 14+

You can use onChange:

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

iOS 13+

Use onReceive instead:

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

Note that onReceive fires also when a view is initialised.

like image 169
pawello2222 Avatar answered Jan 24 '26 20:01

pawello2222



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!