【问题标题】:how to show selected date of first date picker in the second date picker in swift如何在第二个日期选择器中快速显示第一个日期选择器的选定日期
【发布时间】:2018-07-23 05:24:00
【问题描述】:

我在我的代码中使用了两个datePickers,当我们单击第二个datePicker 时,我想在第二个中显示第一个datePicker 的选定日期。为此,我正在使用 DatePickerDialog 的 pod。我已经尝试了所有我无法将第一个选定日期设置为第二个datePicker 的开始日期的方法。我为此使用pod DatePickerDialog。请根据这个告诉我解决方案。 我正在使用这个吊舱 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)
    }

【问题讨论】:

  • 尝试选择器的最小和最大日期属性
  • 嗨,兄弟...我正在使用 pod 进行约会。它没有这些属性..请根据这个告诉我解决方案
  • 发布您正在使用的 Pod 库的参考

标签: ios swift datetime datepicker


【解决方案1】:

在使用它之前,您应该始终阅读 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) {

【讨论】:

  • 如果你选择的日期至少是日期,你不能从日期中选择晚于日期
  • @Vinodh 是的,我认为 OP 应该将选定的日期传递为 defaultDateminimumDate,这样用户就不能选择小于 fromDateToDate
【解决方案2】:

当您从第一个日期选择器中选择日期时,将其存储在变量中。

然后使用-

SeconddatePicker.date = //selectedDate

它将为您的第二个日期选择器设置 tge 默认日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多