ios - 如何在第二个日期选择器中快速显示第一个日期选择器的选定日期
问题描述
我datePickers
在我的代码中使用了两个,当我们点击 second 时,我想datePicker
在第二个中显示选定的日期datePicker
。为此,我使用 pod of DatePickerDialog
. 我已经尝试了所有方法,但无法将第一个选定日期设置为 second 的开始日期datePicker
。我正在使用pod DatePickerDialog
这个。请根据这个告诉我解决方案。我正在使用这个 pod
https://github.com/squimer/DatePickerDialog-iOS-Swift
请看我的代码:
if textField == self.leaveField {
ShowDropDown()
textField.endEditing(true)
}else if textField == self.fromDateField {
DatePickerDialog().show("Select Date", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", datePickerMode: .date) {
(date) -> Void in
if let dt = date {
//UserDefaults.standard.set(dt, forKey: "startDate")
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
self.fromDateField.text = formatter.string(from: dt)
}
textField.endEditing(true)
}
}else if textField == self.toDateField {
//let updatedDate = UserDefaults.standard.value(forKey: "startDate")
DatePickerDialog().show("Select Date", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", datePickerMode: .date) {
(date) -> Void in
if let dt = date {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
self.toDateField.text = formatter.string(from: dt)
let start = self.fromDateField.text
let end = self.toDateField.text
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let startDate:NSDate = dateFormatter.date(from: start!) as! NSDate
let endDate:NSDate = dateFormatter.date(from: end!) as! NSDate
let components = Date.daysBetween(start: startDate as Date, end: endDate as Date)
//let components = cal.components(unit, fromDate: startDate, toDate: endDate, options: nil)
//let components = cal.components(unit, fromDate: startDate, toDate: endDate, options: nil)
self.totalDaysLbl.text = "Total Days " + "\(components)"
let char: Character = "-"
let string = self.totalDaysLbl.text
let result = string?.range(of: "\(char)")
if let result1 = result{
let otherAlert = UIAlertController(title: "Sorry!", message: "You cannot set the date in negative.", preferredStyle: UIAlertControllerStyle.alert)
let dismiss = UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: nil)
otherAlert.addAction(dismiss)
self.present(otherAlert, animated: true, completion: nil)
self.totalDaysLbl.text = ""
}
}
}
textField.endEditing(true)
}
解决方案
在使用它之前,您应该始终阅读 API 文档。您可以在show
方法中传递一些参数来实现这一点。您可以先将第一个textField
字符串转换date
为如下,
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let selectedDate = formatter.date(from: self.fromDateField.text!)
然后使用以下方法将其传递date
为defaultDate
,
open func show(_ title: String,
doneButtonTitle: String = "Done",
cancelButtonTitle: String = "Cancel",
defaultDate: Date = Date(),
minimumDate: Date? = nil,
maximumDate: Date? = nil,
datePickerMode: UIDatePickerMode = .dateAndTime,
callback: @escaping DatePickerCallback) {
推荐阅读
- azure - 运行时 Azure 应用服务中缺少 System.Private.ServiceModel
- javascript - 表格中的 Laravel 简单模式不起作用
- swift - NSCoding 和 Codable 可以共存吗?
- tsql - 在使用 CASE 输出值的 T-SQL 语句中计算 SUM
- vba - 如何使用 vba 代码选择整个工作表
- ios - UITableView 行添加回调未调用
- regex - 正则表达式谷歌分析 - 从 url 过滤目录和语言
- javascript - 使用 CSS 定位 .slick-current 幻灯片两侧的第一个元素
- pandas - 如何使用 timdeltaindex 将 pandas 数据转换为 json?
- javascript - 隐藏覆盖全屏菜单 onclick li 或释放菜单空间