【问题标题】:Save NSDate Data when changing views in StoryBoard - iOS在 StoryBoard 中更改视图时保存 NSDate 数据 - iOS
【发布时间】:2014-02-06 17:06:38
【问题描述】:

我有一个显示日期的 UILabel 和一个可以更改 UILabel 中日期的 UIDatePicker。如何“保存”在情节提要中更改视图时选择的日期,因此当我使用 UILabel 返回视图时,仍会保存所选日期,而不是恢复到今天的日期?这是显示 NSDate 的 UIDatePicker 和 UILabel 的代码:

- (void)flatDatePicker:(FlatDatePicker*)datePicker dateDidChange:(NSDate*)date {

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSCalendar *coptic = [[NSCalendar alloc] initWithCalendarIdentifier:@"coptic"];
[dateFormatter setCalendar:coptic];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];

if (datePicker.datePickerMode == FlatDatePickerModeDate) {
    [dateFormatter setDateFormat:@"EEEE, MMMM, dd, yyyy"];
} else if (datePicker.datePickerMode == FlatDatePickerModeDate) {
    [dateFormatter setDateFormat:@"HH:mm:ss"];
} else {
    [dateFormatter setDateFormat:@"EEEE, MMMM, dd, yyyy HH:mm:ss"];
}
NSString *value = [dateFormatter stringFromDate:date];
self.labelDateSelected.text = value;
}

【问题讨论】:

    标签: ios save nsdate uistoryboard uidatepicker


    【解决方案1】:

    您可以将 NSDate 存储在变量中。然后在 viewWillDisappear 中保存日期:

    -(void)viewWillDisappear:(BOOL)animated {
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         [defaults setObject:lastPickedDate forKey:@"lastDate"];
    }
    

    然后,当您返回此屏幕时,您可以验证是否保存了日期并在 viewDidLoad 或 viewDidAppear 中恢复它。

    -(void)viewDidLoad {
         //another code
    
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         NSDate *date = [defaults objectForKey:@"lastDate"];
    
         if(date) {
            _datePicker.date = date;
         }
    }
    

    【讨论】:

    • 谢谢!我添加了我的代码。您能否进一步详细说明您的答案?我有点大致了解,但这是一个约会的事实已经并且一直让我失望。
    • 在切换到另一个视图/屏幕之前,您是否已经在某处保存或存储该日期?
    • 没有。我不知道如何或在哪里保存日期。
    • 我用通用解决方案编辑了我的答案。如果您的应用必须以这种方式为不同用户存储日期,您可能会遇到一些麻烦。也许如果你能给我更多关于这个屏幕的细节或者你的应用程序是如何工作的,我可以提供更多帮助......
    • 好的。非常感谢您的耐心等待。我在 UILabel 中显示了一个 NSDate,一个更改日期的 UIDatePicker,以及一个将视图更改为加载 UIWebView 的页面的按钮。假设今天的日期是 2014 年 2 月 6 日,并且用户将其更改为 2014 年 2 月 5 日,当用户更改视图然后返回时,日期显示为 2014 年 2 月 6 日,而不是保持在 2014 年 2 月 5 日作为用户之前已选择。
    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 2015-06-21
    • 2012-05-28
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多