【问题标题】:how to Select current time without scrolling picker view如何在不滚动选择器视图的情况下选择当前时间
【发布时间】:2021-12-26 11:45:55
【问题描述】:

如果不滚动选择器视图,我无法选择当前时间。

我正在这样做-:

@objc func dateChanged(_ sender: UIDatePicker?) {
        let dateFormatter = DateFormatter()
        dateFormatter.timeStyle = .short
        dateFormatter.dateFormat = "HH:mm"
        if let date = sender?.date {
            reminderLbl.text = dateFormatter.string(from: date)
           }
}

这是用于打开选择器视图 -:

 func openDatePickerView(){
    datePicker = UIDatePicker.init()
    datePicker.autoresizingMask = .flexibleWidth
    datePicker.datePickerMode = .time
    if #available(iOS 13.4, *) {
        datePicker.preferredDatePickerStyle = .wheels
        datePicker.backgroundColor = UIColor.white
    } else {
        // Fallback on earlier versions
    }
    datePicker.addTarget(self, action: #selector(self.dateChanged(_:)), for: .valueChanged)
    datePicker.frame = CGRect(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 300)
    self.view.addSubview(datePicker)
    toolBar = UIToolbar(frame: CGRect(x: 0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 50))
    toolBar.barStyle = .default
    toolBar.items = [UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil), UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.onDoneButtonClick))]
    toolBar.sizeToFit()
    self.view.addSubview(toolBar)
}

【问题讨论】:

  • 你可能会为valueChanged事件调用这个函数,它不会在第一次被调用。调用 viewDidLoad 中的方法。
  • 每次选择当前时间都会发生
  • 如何选择当前时间??包含相关代码,然后解释问题。
  • openDatePickerView 结束时再次调用dateChanged(datePicker) 方法,这将使用当前日期初始填充文本字段。
  • 我不明白问题出在哪里。你不就是想念datePicker.setDate(Date(), animated: false)吗?

标签: swift datepicker


【解决方案1】:

我已经附加了给你当前时间的功能。

func getTimeFrom(date: Date) {
    let dateFormatter = DateFormatter()
    dateFormatter.timeStyle = DateFormatter.Style.short
    dateFormatter.timeZone = TimeZone.current
    let time = dateFormatter.string(from: date)
    lbl_Time.text = time
}

-> 在 ViewDidLoad() 中调用上述函数并从选取器中传递当前日期,如下面的代码。

override func viewDidLoad() {
    super.viewDidLoad()
    getTimeFrom(date: datePicker.date)
}

-> 用于从日期选择器中选择的日期和时间。

@IBAction func actionPicker(_ sender: UIDatePicker) {
    getTimeFrom(date: sender.date)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-30
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多