【问题标题】:Getting Wrong Date While Using Date Picker使用日期选择器时出现错误的日期
【发布时间】:2023-03-16 19:10:02
【问题描述】:

我使用了一个带有 UIDatePicker 的 baseViewController。我在其他 viewControllers 中使用了这个日期选择器。当我尝试获取日期时。总是前一个日期显示在日志中。这发生在每个视图控制器中。

获取日期选择器。

    self.datePicker = [[[UIDatePicker alloc] init] autorelease];
self.datePicker.datePickerMode = UIDatePickerModeDate;
[self.datePicker addTarget:self action:@selector(dateValueChanged:) forControlEvents:UIControlEventValueChanged];
[self.datePicker resignFirstResponder];

使用日期选择器从文本字段中获取值。

- (IBAction)dateValueChanged:(id)sender
{
UIDatePicker *picker = (UIDatePicker *)sender;
dateSelected = [picker date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
if (self.field.tag == 101)
    self.field.text = [dateFormatter stringFromDate:dateSelected];
NSLog(@"%@",dateSelected);
}

【问题讨论】:

  • 请在您的第二种方法中添加断点,并检查dateSelected 的值。你在用ARC吗?这两个方法都在 asme 类中吗?
  • 即使在日志中我也得到了上一个日期......是的,这两种方法都在同一个类中
  • 看起来日期选择器有问题。日期值更改方法正在返回上一个日期。

标签: iphone objective-c ios xcode uidatepicker


【解决方案1】:

看起来好像您正在编辑实体的值,但没有持久化它。尝试在 save 方法的末尾添加类似以下内容:

NSError* error = nil;
[appDelegate.managedObjectContext save:&error];

【讨论】:

  • @Sekhar 这与运气无关...您是否在error 变量中获得了返回值?
  • 这里没有更多工作要做。您将不得不更好地解释您的尝试。
  • 我可以保存日期,但之前的日期正在保存....我按照你说的添加了这些行。发布了更新的代码。
  • dateValueChanged: 被调用了吗? save: 被调用了吗?
  • 是的先生。如果没有这两个被调用,我无法保存数据。但我可以保存它,也可以在其他视图中检索它们。
【解决方案2】:

作为测试,尝试摆脱自动释放,看看你的行为是否改变。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多