【问题标题】:Date Format not working in IOS日期格式在 IOS 中不起作用
【发布时间】:2017-11-17 06:13:15
【问题描述】:

我有日期选择器来选择日期并将其显示在标签上。我正在尝试yyyy-MM-dd 的格式。但是当我选择任何日期时,标签不会显示我从日期选择器中选择的日期。

如何显示这种格式yyyy-MM-dd

这是我的代码:

datepicker=[[UIDatePicker alloc]init];
datepicker.datePickerMode=UIDatePickerModeDate;
datepicker.backgroundColor = [UIColor grayColor];
[datepicker setValue:[UIColor whiteColor] forKey:@"textColor"];

UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height - 216 - 44, self.view.frame.size.width, 44)];
[toolBar setTintColor:[UIColor blackColor]];
UIBarButtonItem *doneBtn=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(ShowSelectedDate)];
UIBarButtonItem *space=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[toolBar setItems:[NSArray arrayWithObjects:doneBtn,space,nil]];

[_DOB setInputView: datepicker];

_DOB.inputAccessoryView =toolBar;


-(void)ShowSelectedDate {
    NSDateFormatter *fromatter=[[NSDateFormatter alloc]init];
    [fromatter setDateFormat:@"yyyy-MM-dd"];
    self.DOB.text=[NSString stringWithFormat:@"%@",[fromatter stringFromDate:datepicker.date]];
    [_DOB resignFirstResponder];
}

我的日期选择器如下所示:

【问题讨论】:

  • 您的方法ShowSelectedDate 似乎没有被调用。尝试在方法中添加断点。

标签: ios date uidatepicker target-action


【解决方案1】:

你可以实现一个action方法来拦截日期选择器的UIControlEventValueChanged。通常这是放置在管理日期选择器的视图控制器类中:

-(IBAction)dateChanged:(UIDatePicker * )inPicker {
     // applying inPicker.date to your label
}

将操作方法​​添加到您的选择器中,如下所示:

datepicker=[[UIDatePicker alloc]init];
datepicker.datePickerMode=UIDatePickerModeDate;
[datepicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];

其中self 是视图控制器,它实现了dateChanged:。你也可以使用ShowSelectedDate方法:

[datepicker addTarget:self action:@selector(ShowSelectedDate) forControlEvents:UIControlEventValueChanged];

注意:由于ShowSelectedDate 没有参数,所以@selector 的末尾没有冒号。

您也可以将日期选择器作为参数传递给ShowSelectedDate

-(void)ShowSelectedDate:(UIDatePicker * )datepicker {
    NSDateFormatter *fromatter=[[NSDateFormatter alloc]init];
    [fromatter setDateFormat:@"yyyy-MM-dd"];
    self.DOB.text=[NSString stringWithFormat:@"%@",[fromatter stringFromDate:datepicker.date]];
    [_DOB resignFirstResponder];
}

那么你应该应用这个动作:

[datepicker addTarget:self action:@selector(ShowSelectedDate:) forControlEvents:UIControlEventValueChanged];

注意额外的冒号,因为该方法现在有一个参数。

【讨论】:

  • 我不知道该怎么做,我的代码呢? @macmoonshine
  • 我已经编辑了我的帖子。尝试根据最后两个代码块修改您的代码。
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多