Как напечатать возраст на основе выбранного средства выбора даты в текстовом поле? - PullRequest
0 голосов
/ 03 мая 2018

Когда я выбираю дату, приложение перестает отвечать. Я хочу выбрать дату и показать ее в текстовом поле, не нажимая кнопку «Готово». Поэтому я хочу видеть дату вживую.

Как распечатать возраст на основе выбранного средства выбора даты в TextField?

import UIKit
import Firebase

class SignUpEmailSegue0: UIViewController {
    @IBOutlet weak var dateBirthday: UITextField!

    @IBAction func dateBirthdayEdit(_ sender: UITextField) {
        let datePickerView = UIDatePicker()
        datePickerView.datePickerMode = UIDatePickerMode.date

        sender.inputView = datePickerView
        datePickerView.addTarget(self, action: #selector(handleDatePicker), for: UIControlEvents.valueChanged)
    }

    @objc func handleDatePicker(sender: UIDatePicker) {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd/MMM/yyyy"
        dateBirthday.text = dateFormatter.string(from: sender.date)
    }
}

1 Ответ

0 голосов
/ 03 мая 2018

Попробуйте изменить код следующим образом - используя #selector() и выставив свою функцию на @objc

datePickerView.addTarget(self, action: #selector(handleDatePicker), for: UIControlEvents.valueChanged)


@objc func handleDatePicker(sender: UIDatePicker) {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyyy"
    dateBirthday.text = dateFormatter.string(from: sender.date)
}

Чтобы ответить на второй вопрос о том, как получить возраст:

let gregorian = Calendar(identifier: .gregorian)
let ageComponents = gregorian.dateComponents([.year], from: sender.date, to: Date())
if let age = ageComponents.year {
    print(age)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...