保存来自UIDatePicker的选择

时间:2018-12-29 17:37:02

标签: swift uidatepicker saving-data

所以我在Xcode中有一个UIDatePicker。我需要一种方法来自动保存UIdatePicker。这样,下次用户打开该应用程序时,UIDatePicker将显示上次关闭该应用程序之前输入的日期。这是我的一些代码

logging.getLogger('someLogger')

因此,每当我打开我的应用程序时,我都会得到今天的日期。这是屏幕截图This is the todays date

但是我打开应用程序时真正想要的是

This is a random date that I just set it to

如果您想让我更具体,或者对我有任何疑问,请发表评论。我也不太确定我的代码是否有用,但这是有用的。谢谢。

1 个答案:

答案 0 :(得分:3)

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")
}