当用户点击文本字段时,记录和保存用户出生日期



在我的第一个应用中使用Swift 3,在个人资料屏幕上,用户可以输入他的出生日期。

用户点击UI DatePicker时,用户点击文本字段。我的问题是那个日期选择器仅显示日期和时间。我想拥有一个日历,用户可以选择他的出生日期,然后在文本字段中显示出出生日期,从稍后将其保存在数据库中。我在这里遇到了许多答案,但它们主要基于日期选择器而不是日历。

override func viewDidLoad() {
    super.viewDidLoad()
    userDateofBirthTextField.delegate = self
}

func datePickerChanged(sender: UIDatePicker) {

    let datePicker = UIDatePicker( )
    datePicker.datePickerMode = UIDatePickerMode.date
    datePicker.maximumDate = Calendar.current.date(byAdding: .year, value: -16, to: Date())
    userDateofBirthTextField.inputView = datePicker // selected date should show in text field
}
func textFieldDidBeginEditing(_ textField: UITextField) {
    let datePicker = UIDatePicker()
    textField.inputView = datePicker
    datePicker.addTarget(self, action: #selector(datePickerChanged(sender:)), for: .valueChanged)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    userDateofBirthTextField.resignFirstResponder()
    return true
}

func closekeyboard() {
    self.view.endEditing(true)
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    closekeyboard()
}

您可以如下更改。

在ViewDidload

let datePicker = UIDatePicker()
    datePicker.maximumDate = Calendar.current.date(byAdding: .year, value: -16, to: Date())
    userDateofBirthTextField.addTarget(self, action: #selector(datePickerChanged(sender:)), for: .valueChanged)
    textField.inputView = datePicker

选择器方法

 func datePickerChanged(sender: UIDatePicker) {
              let formatter = DateFormatter()
         formatter.dateFormat = "yyyy mm dd"   
             userDateofBirthTextField.text = formatter.string(from: sender.date)
        }

最新更新