在textfield上设置datepicker的当前日期

时间:2018-06-15 10:00:46

标签: ios swift uidatepicker

我在文本字段中设置了一个日期选择器。为此,这就是我写的......(在TabItem

viewDidLoad

let datePicker = UIDatePicker() datePicker.datePickerMode = UIDatePickerMode.date datePicker.addTarget(self, action: #selector(AddDetailsViewController.theDatePickerValueChanged(sender:)), for: .valueChanged) dateTimeTextfield.inputView = datePicker 之外我有这样的函数viewDidLoad ......

theDatePickerValueChanged

但现在发生的事情是当我点击文本字段时,datePicker出现了。但是如果我想在文本字段中设置当前日期,那么我必须从datePicker上的当前日期向前或向后移动,然后再次返回到当前日期。

但我想要的是当datePicker出现时,它上面的当前日期应直接设置在文本字段上,而不需要从当前日期前进或后退。我怎样才能做到这一点......?

3 个答案:

答案 0 :(得分:2)

您可以实现文本字段委托方法textFieldShouldBeginEditing:,并且在该委托方法中,您需要这样做...

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

  if dateTimeTextfield.text!.isEmpty {
    let formatter = DateFormatter()
    formatter.dateStyle = .medium
    formatter.timeStyle = .medium
    dateTimeTextfield.text = formatter.string(from: Date())
  }
  return true
}

不要忘记设置dateTimeTextfield.delegate = self

答案 1 :(得分:1)

实施UITextFieldDelegate方法textFieldShouldBeginEditing并调用您的函数theDatePickerValueChanged,如下所示:

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

    if dateTimeTextfield.text!.isEmpty {
        theDatePickerValueChanged(sender: UIDatePicker())
    }
    return true
}

dateTimeTextfield.delegate = self

中设置viewDidLoad

答案 2 :(得分:1)

设置UITextFieldDelegate并使用textFieldDidBeginEditing

//Set delegate
dateTimeTextfield.delegate = self


// UITextFieldDelegate method
func textFieldDidBeginEditing(_ textField: UITextField) -> void {

  if textField.text == nil || textField.text!.isEmpty {
    let formatter = DateFormatter()
    formatter.dateStyle = .medium
    formatter.timeStyle = .medium
    textField.text = formatter.string(from: Date())
  }

}