【问题标题】:UIDatePicker returns current date not selected dateUIDatePicker 返回当前日期未选择日期
【发布时间】:2018-06-05 21:57:38
【问题描述】:

我有一个UIDatePicker,我按照下面的代码打印选定的日期。但是,它不打印所选日期,只打印当前日期。

@objc func setupDiscoverButton() {

    let cell = Bundle.main.loadNibNamed("FirstTableViewCell", owner: self, options: nil)?.first as! FirstTableViewCell

    // Date
    let sessionDate = cell.datePicker.date

    print("date: \(sessionDate)")
}

这是我为UIDatePicker 定义的地方。

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = Bundle.main.loadNibNamed("FirstTableViewCell", owner: self, options: nil)?.first as! FirstTableViewCell

    // Date & time picker
    cell.datePicker.minimumDate = Date()
    cell.datePicker.timeZone = TimeZone.current

    // Discover button
    cell.discoverButton.addTarget(self, action: #selector(setupDiscoverButton), for: .touchUpInside)

    return cell
}

【问题讨论】:

  • 分享你的日期选择器代码
  • @AbdelahadDarwish 我已经添加了这个
  • @AbdelahadDarwish 它是在 Storyboard 中制作的 - 我必须实现其他方法吗?

标签: ios swift uidatepicker


【解决方案1】:

要更改 DatePicker,请收听 datePickerChanged

datePicker.addTarget(self, action: #selector(datePickerChanged(picker:)), for: .valueChanged)

所以你的细胞将是

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = Bundle.main.loadNibNamed("FirstTableViewCell", owner: self, options: nil)?.first as! FirstTableViewCell

    // Date & time picker
    cell.datePicker.minimumDate = Date()
    cell.datePicker.timeZone = TimeZone.current
cell.datePicker.addTarget(self, action: #selector(datePickerChanged(picker:)), for: .valueChanged)

    // Discover button
    cell.discoverButton.addTarget(self, action: #selector(setupDiscoverButton), for: .touchUpInside)

    return cell
}

  @objc func datePickerChanged(picker: UIDatePicker) {
        print(picker.date)
    }

【讨论】:

  • 完美!谢谢 :) - 你知道我如何更改打印到用户所在时区的时间,而不是标准 UTC?
  • 但我不想使用DateFormatter,因为我想将日期保留为Date,而不是String - 我试过datePicker.timeZone = TimeZone.current,但这不起作用。
  • @AnnabelleSykes 你确实想要一个 DateFormatter。保留Date。但是,只要您希望向用户显示Date,请使用 DateFormatter。
  • @AnnabelleSykes Date 没有时区。只需按原样存储日期。无需进行任何转换。您可能会发现 maddysoft.com/articles/dates.html 有助于更好地理解 Date。
猜你喜欢
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
相关资源
最近更新 更多