Swift 从UIDatePicker保存选择

Swift 从UIDatePicker保存选择,swift,uidatepicker,saving-data,Swift,Uidatepicker,Saving Data,所以我在Xcode中有一个UIDatePicker。我需要一种方法使UIdatePicker自动保存。因此,用户下次打开应用程序时,UIDatePicker将显示上次关闭应用程序之前输入的相同日期。这是我的一些代码 @IBOutlet weak var BirthdayPicker: UIDatePicker! ... override func viewDidLoad() { super.viewDidLoad() //___________________________

所以我在Xcode中有一个UIDatePicker。我需要一种方法使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
    //____________________________________
因此,每当我打开我的应用程序,我就会得到今天的日期。这是截图

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


如果你想让我说得更具体一些,或者有任何问题,请留下评论。我也不确定我的代码是否有用,但它确实有用。谢谢。

UIDatePicker
具有属性
date
,表示在日期选择器中选择的当前
date
。你的目标应该是把这个日期保存在某个地方
UserDefaults
对于这种情况应该足够了

首先为事件的日期选取器创建
iAction
。值已更改,当值更改时,将选取器的当前日期保存到
UserDefaults。使用键
“BirthdayDate”

然后在
viewDidLoad
中,如果键
BirthdayDate
已经保存了日期,则设置
BirthdayPicker的当前日期

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

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