在SWIFT中,我使用一个viewcontroller(VC2)来保存一个datePicker,我从中获取日期并将其传递给VC1。 VC1有一个按钮,通过segue加载VC2。 问题是,当我得到第一个日期并且放松回到VC1和下一个我尝试再次点击VC1中的按钮来更改日期,我发现datePicker日期设置为今天而不是我选择的最后一个。当我下次尝试更改时,如何在datePicker中保留第一个选择的日期/时间?
我的意思是当datePicker在同一个VC中使用时,如果您决定再次更改日期,第一次选择的日期/时间将保留在datePicker中。
此致 穆罕默德
我尝试了以下内容: 在VC1中:
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
var vc = storyBoard.instantiateViewControllerWithIdentifier("datePickerVc1") as! UIViewController
self.presentViewController(vc, animated: true, completion: nil)
在VC2中:
@IBAction func exit(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
并且datePicker仍然会返回其默认状态,即日期将返回到今天的日期。
答案 0 :(得分:1)
谢谢你们的回答。 我找到了解决方案。在离开模态视图VC2之前放下以下代码:
let currentDate = datePicker.date
NSUserDefaults.standardUserDefaults().setObject(currentDate, forKey: "Current-Date")
在VC2的viewDidLoad中输入以下内容:
if let date = NSUserDefaults.standardUserDefaults().objectForKey("Current-Date") as? NSDate {
datePicker.setDate(date, animated: true)
感谢David Silverfarmer 在这个链接 Save datePicker value using NSUserdefaults(xcode,swift2)
由于
穆罕默德
答案 1 :(得分:0)
如果您创建一个局部变量来保持对VC2的引用并在VC1上显示而不是使用segue,那么当您再次显示VC2时,VC2的状态将不会更改回默认值。我建议使用一个惰性变量来存储它
答案 2 :(得分:0)
您可以像Swinny建议的那样保留指向日期选择器VS的指针,或者您可以为日期选择器视图控制器提供startingDate属性。如果您这样做,请在VC1 startingDate
中设置prepareForSegue
,然后在日期选择器VC的viewWillAppear中,将开始日期安装到日期选择器中。