从 UIDatePicker 保存选择
Save a selection from an UIDatePicker
所以我在 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
//____________________________________
所以每当我打开我的应用程序时,我都会得到今天的日期。这是截图This is the todays date
但我打开应用后真正想要的是
This is a random date that I just set it to
如果你想让我说得更具体一点或者对我有任何问题,请发表评论。我也不确定我的代码是否有用,但确实有用。谢谢。
UIDatePicker
有 属性 date
,代表当前在日期选择器中选择的 Date
。您的目标应该是将此日期保存在某个地方。 UserDefaults
对于这种情况应该足够了。
开始为事件 .valueChanged
的日期选择器创建 IBAction
,当值更改时,使用键 "BirthdayDate"
[将选择器的当前日期保存到 UserDefaults.standard
@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")
}
所以我在 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
//____________________________________
所以每当我打开我的应用程序时,我都会得到今天的日期。这是截图This is the todays date
但我打开应用后真正想要的是
This is a random date that I just set it to
如果你想让我说得更具体一点或者对我有任何问题,请发表评论。我也不确定我的代码是否有用,但确实有用。谢谢。
UIDatePicker
有 属性 date
,代表当前在日期选择器中选择的 Date
。您的目标应该是将此日期保存在某个地方。 UserDefaults
对于这种情况应该足够了。
开始为事件 .valueChanged
的日期选择器创建 IBAction
,当值更改时,使用键 "BirthdayDate"
[将选择器的当前日期保存到 UserDefaults.standard
@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")
}