Ios 从文本字段上的日期选择器设置当前日期
我正在文本字段上设置日期选择器。这就是我写的….(在Ios 从文本字段上的日期选择器设置当前日期,ios,swift,uidatepicker,Ios,Swift,Uidatepicker,我正在文本字段上设置日期选择器。这就是我写的….(在viewDidLoad中) 在外部viewDidLoad我有一个函数DatePickerValueChanged如下所示 @objc func theDatePickerValueChanged(sender: UIDatePicker) { let formatter = DateFormatter() formatter.dateStyle = .medium formatter.timeStyle = .mediu
viewDidLoad
中)
在外部viewDidLoad
我有一个函数DatePickerValueChanged
如下所示
@objc func theDatePickerValueChanged(sender: UIDatePicker) {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .medium
dateTimeTextfield.text = formatter.string(from: sender.date)
}
但是现在当我点击文本字段时,日期选择器出现了。但是如果我想在文本字段上设置当前日期,那么我必须在日期选择器上从当前日期向前或向后移动,然后再次返回到当前日期
但我想要的是,当日期选择器出现时,它上的当前日期应该直接设置在文本字段上,而不需要我从当前日期向前或向后。我怎样才能做到这一点 您可以实现文本字段委托方法
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
实现uitextfield委托
方法textfield应开始编辑
并调用函数更改的日期选择器值
,如下所示:
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
if dateTimeTextfield.text!.isEmpty {
theDatePickerValueChanged(sender: UIDatePicker())
}
return true
}
在
viewDidLoad
中设置dateTimeTextfield.delegate=self
,设置UITextFieldDelegate并使用textfieldDiBeginediting
let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.date
datePicker.addTarget(self, action: #selector(AddDetailsViewController.theDatePickerValueChanged(sender:)), for: .valueChanged)
dateTimeTextfield.inputView = datePicker
//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())
}
}
很高兴听到我能帮忙。当然可以@Krunal。已经向所有人投了赞成票。谢谢大家:)@bwv是的,但您可以只查看代码。简短的回答:)