Сохранить выбор из UIDatePicker - PullRequest
0 голосов
/ 29 декабря 2018

Итак, у меня есть UIDatePicker в Xcode.Мне нужен способ, чтобы UIdatePicker сохранялся автоматически.Чтобы в следующий раз, когда этот пользователь открыл приложение, UIDatePicker отображал ту же дату, которая была введена до его закрытия в последний раз.Вот часть моего кода

@IBOutlet weak var BirthdayPicker: UIDatePicker!
...
 override func viewDidLoad() {
    super.viewDidLoad()

    //__________________________________________________________________________
    // This makes sure the user doesnt use a date after the current date
    var components = DateComponents()
    components.year = -300

    let minDate = Calendar.current.date(byAdding: components, to: Date())

    components.year = 0
    components.day = 0
    components.hour = 0
    components.minute = 0
    components.second = 0
    let maxDate = Calendar.current.date(byAdding: components, to: Date())

    BirthdayPicker.minimumDate = minDate
    BirthdayPicker.maximumDate = maxDate
    //____________________________________

Так что, когда я открываю свое приложение, я получаю сегодняшнюю дату.вот скриншот Это сегодняшняя дата

Но что я действительно хочу, когда я открываю приложение, это

Это случайная дата, которую я только что установилна

Если вы хотите, чтобы я был более конкретным или у меня возникли вопросы, просто оставьте комментарий.Я также не совсем уверен, что мой код полезен, но это что-то.Спасибо.

1 Ответ

0 голосов
/ 29 декабря 2018

UIDatePicker имеет свойство date, которое представляет текущий Date, выбранный в окне выбора даты.Ваша цель должна сохранить эту дату где-нибудь.UserDefaults должно быть достаточно для этого случая.

Начните с создания IBAction для вашего средства выбора даты для события .valueChanged и, когда значение изменилось, сохраните текущую дату вашего средства выбора в UserDefaults.standard с ключом "BirthdayDate"

@IBAction func datePickerChangedValue(_ sender: UIDatePicker) {
    UserDefaults.standard.set(sender.date, forKey: "BirthdayDate")
}

затем в viewDidLoad, если для ключа BirthdayDate уже есть сохраненная дата, установите текущую дату BirthdayPicker

if let date = UserDefaults.standard.object(forKey: "BirthdayDate") as? Date {
    BirthdayPicker.date = date
}

override func viewDidLoad() {
    super.viewDidLoad()
    ...
    var components = DateComponents()
    components.year = -300
    let minDate = Calendar.current.date(byAdding: components, to: Date())
    BirthdayPicker.minimumDate = minDate
    BirthdayPicker.maximumDate = Date() // if `maxDate` is just current date, you can use `Date()`

    if let date = UserDefaults.standard.object(forKey: "BirthdayDate") as? Date {
        BirthdayPicker.date = date
    }
}

@IBAction func datePickerChangedValue(_ sender: UIDatePicker) {
    UserDefaults.standard.set(sender.date, forKey: "BirthdayDate")
}
...