在 UIDatePicker 中设置时间默认值

Set Time Default in UIDatePicker

我正在尝试使用默认值(字符串)填充 pickerView。目前我能够在用户与其交互后捕获它的值作为时间,但是我无法在它对用户可见之前设置时间值。

我试过了

let test = dateFormatter.date(from: "09:00 AM")
timePicker.setDate(test, animated: false)

但是错误 "Value of type '(UIDatePicker) -> ()' has no member 'setDate'"

    @IBOutlet weak var timePicker: UIDatePicker!
    @IBAction func timePicker(_ sender: UIDatePicker) {
      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = "hh:mm a"

      //my attempt at passing in a string
      let test = dateFormatter.date(from: "09:00 AM")
      timePicker.setDate(test, animated: false)

      tempTime = (dateFormatter.string(from: sender.date))//successfully captures the user's input value
}

这是启动 xib 的函数(包含 timePicker)

    func showSomeDialogue() {
       let newVC = SomeViewContoller(nibName: "SomeViewController", bundle: nil)
       let popup = PopupDialog(viewController: newVC,
                               buttonAlignment: .horizontal,
                               transitionStyle: .bounceUp,
                               tapGestureDismissal: true,
                               panGestureDismissal: false)

       present(popup, animated: true, completion: nil)
        newVC.someDelegate = self as SomeDelegate
   }

xib 的class

import UIKit

protocol MealDelegate {
  func didCreateMeal(mealTime: String)
}

class SomeViewContoller: UIViewController {

 var someDelegate: SomeDelegate!
 var tempTime = ""

 @IBOutlet weak var timePicker: UIDatePicker!
 @IBAction func timePicker(_ sender: UIDatePicker) {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "hh:mm a"
    tempTime = (dateFormatter.string(from: sender.date))
 }

 @IBAction func someSaveBtn(_ sender: UIButton) {
    mealDelegate.didCreateMeal(mealTime: tempTime)
    self.dismiss(animated: true, completion: nil)
 }
}

将以下内容添加到您的 SomeViewController class:

//MARK: - View Did Load
override func viewDidLoad() {
    super.viewDidLoad()

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "hh:mm a"
    let date = dateFormatter.date(from: "10:57 PM")
    //or whatever date you want to display as default
    timePicker.setDate(date, animated: true)
}

将以下内容添加到您的视图控制器class:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"

let date = dateFormatter.date(from: "09:00 AM")
timePicker.date = date

试试这个,

 @IBAction func timePicker(_ sender: UITextField) {
        let datePickerView = UIDatePicker()
                datePickerView.datePickerMode = .dateAndTime

                sender.inputView = datePickerView
                datePickerView.addTarget(self, action: #selector(handleTimePicker(sender:)), for: .valueChanged)
    }
    @objc func handleTimePicker(sender: UIDatePicker) {

           let dateFormatter = DateFormatter()
           dateFormatter.dateFormat = "HH:mm "
               tempTime = dateFormatter.string(from: sender.date)
       // view.endEditing(true)
       }