Сохранить выбор из UIDatePicker
Так что у меня есть 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 ответ
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")
}