保存来自 UIDatePicker 的选择
Posted
技术标签:
【中文标题】保存来自 UIDatePicker 的选择【英文标题】:Save a selection from an UIDatePicker 【发布时间】:2018-12-29 17:37:01 【问题描述】:所以我在 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
如果您希望我更具体或对我有任何问题,请发表评论。我也不确定我的代码是否有用,但它确实有用。谢谢。
【问题讨论】:
【参考方案1】: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")
【讨论】:
以上是关于保存来自 UIDatePicker 的选择的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 部分中的 NSDates 不反映来自 UIDatePicker 的日期
使用 jquery-ui datepicker 的 knockoutjs 数据绑定
是否可以在 Swift 中拥有来自同一个 UITextField 的 UIPickerView 和 UIDatePicker?