Date Pickers
ViewControllerReady-to-use date picker modals that extend TTBasePopupViewController. TTBaseDatePicker wraps Apple's UIDatePicker in a card with Cancel/Select buttons. TTBaseMonthYearPicker provides a month+year-only picker for card expiry inputs.
π TTBaseDatePicker
// Date-only picker (default)
let picker = TTBaseDatePicker(
with: true, // tap outside to dismiss
selectedDate: Date(),
mode: .date
)
picker.didTouchOKButton = { [weak self] selectedDate in
self?.dateLabel.text = DateFormatter.display.string(from: selectedDate)
}
picker.didTouchCancelButton = { /* optional */ }
present(picker, animated: true)
// Date + Time picker
let dateTimePicker = TTBaseDatePicker(
with: false,
selectedDate: event.startDate,
mode: .dateAndTime,
textColor: .darkText
)
// Time only
let timePicker = TTBaseDatePicker(
with: true,
selectedDate: Date(),
mode: .time
)
// Custom colors
picker.setColor(
withPanel: .white,
text: .darkText,
leftButton: .systemGray,
rightButton: .systemBlue
)
// Custom button labels
picker.setText(forLeftButton: "Huα»·", right: "Chα»n")
// Hide buttons (display only)
picker.setHiddenButton()
// Hide just cancel
picker.setHiddenCancelButton()
// Real-time change
picker.didDatePickerValueChanged = { date in
print("Picker moved to:", date)
}
π API Reference
| Member | Type | Description |
|---|---|---|
init(with:selectedDate:mode:textColor:) | Init | Primary initializer |
didDatePickerValueChanged | (Date) β Void | Called on every wheel change |
didTouchCancelButton | () β Void | Cancel button tapped |
didTouchOKButton | (Date) β Void | OK/Select button tapped with final date |
setText(forLeftButton:right:) | Method | Localize button labels |
setColor(withPanel:text:leftButton:rightButton:) | Method | Fully customize colors |
setHiddenButton() | Method | Hide both buttons |
setHiddenCancelButton() | Method | Hide cancel only |
mode | UIDatePicker.Mode | .date / .time / .dateAndTime |
Pro Tip: Use
didTouchOKButton rather than didDatePickerValueChanged in forms β didDatePickerValueChanged fires for every wheel movement, potentially causing repeated UI updates. Only commit the selection in the OK handler.