【问题标题】:DatePicker not selecting the correct dateDatePicker 没有选择正确的日期
【发布时间】:2012-12-20 21:15:46
【问题描述】:

我的view 中有一个Button。点击Button 你会得到一个默认为今天日期的datepicker,然后用户可以选择他们想要搜索事件的日期。 问题是,无论我选择什么日期,它总是返回当前日期并将其添加到我的 TextField 中,我已将它放在 mu Button 中。谁能告诉我我错在哪里。我正在设置日期选择器以编程方式。

以下是我的代码,希望有人可以帮助我!

//点击按钮时显示日期选择器

 - (IBAction)startDateButtonAction:(id)sender
  {
     if ([popOverController isPopoverVisible]) {
    [popOverController dismissPopoverAnimated:YES];
  }
    UIViewController* popoverContent = [[UIViewController alloc] init]; //ViewController
    UIView *popoverView1 = [[UIView alloc] init];   //view
    datePicker          =[[UIDatePicker alloc]init];//Date picker
    datePicker.frame    =CGRectMake(0,0,240, 150);
    datePicker.datePickerMode = UIDatePickerModeDate;
    [datePicker setMaximumDate:[[NSDate date] dateByAddingTimeInterval:24*60*60*-6]];
    [datePicker setMinimumDate:[DateFormatter getSubtractedDateForomCurrentDateWith:35]];
    datePicker.date     = [DateFormatter getDateFromString:startDateLabel.text];
    datePicker.selected = YES;
    [datePicker addTarget:self action:@selector(datePickerValue)       forControlEvents:UIControlEventValueChanged];
    [popoverView1 addSubview:datePicker];
    popoverContent.view = popoverView1;
    popOverController = [[UIPopoverController alloc]    initWithContentViewController:popoverContent];
    [popOverController setPopoverContentSize:CGSizeMake(240, 150) animated:NO];
    [popOverController presentPopoverFromRect:startDateButton.frame inView:headerView   permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

//从日期选择器中选择任何日期时的操作函数

 - (void) datePickerValue
  {
     NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
     [offsetComponents setDay:-6]; 
     NSDate *labelStartDate = datePicker.date;
     startDate = [DateFormatter getOnlyDateComponentsFromDate:labelStartDate];
     NSDate *labelEndDate = [self addDayToDate:startDate Number:6];
     startDateLabel.text = [DateFormatter getDateStringddmmyyy:labelStartDate];
     endDateLabel.text   = [DateFormatter getDateStringddmmyyy:labelEndDate];
   }

[包括这里用到的函数]

//used for getting date components
+(NSDate *) getOnlyDateComponentsFromDate:(NSDate *)date
{
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:flags fromDate:date];
NSDate* dateOnly = [calendar dateFromComponents:components];
return dateOnly;
}  


 - (NSDate *) addDayToDate:(NSDate *)date Number:(int) number
{
  NSDate *newDate = [date dateByAddingTimeInterval:60*60*24*number];
  return newDate;
}

我正在使用 ARC。 这里datePicker.date 只给我当前日期,即使我选择了任何其他日期

【问题讨论】:

  • 你在 IB 中添加 datePicker 吗?如果是这样,您确定 IBOutlet 链接正确吗?
  • 没有 iam 以编程方式添加日期选择器
  • 你确定它的datePicker.date 值直接不是[DateFormatter getDateStringddmmyyy:labelStartDate] 吗?
  • @SumiSadiq : 请显示您创建日期选择器的代码。
  • 对于属于实例变量的项目(DateFormatter?、startDate 等),请提供您的 .h 中显示它们如何定义的相关代码(什么类,strong /weakretain/assign)。 DateFormatter 是类还是实例变量。您是否使用自动引用计数 (ARC)? getOnlyDateComponentsFromDate:getDateStringddmmyyy:[self addDayToDate:Number:] 方法有什么作用(同时提供它们的代码)。

标签: objective-c ios date datepicker


【解决方案1】:

你需要像这样初始化你的日期选择器。

 _datePicker = [[UIDatePicker alloc] initWithFrame:pickerFrame];
_datePicker.tag=1951;
_datePicker.datePickerMode=UIDatePickerModeDate;

[_datePicker addTarget:self action:@selector(ageChanged:) forControlEvents:UIControlEventValueChanged];
[_actionSheet addSubview:_datePicker];

对于你的这个方法:ageChanged:

-(void)ageChanged:(id)sender {

NSDate *datePicked = [_datePicker date];
NSLog(@"%@", datePicked);
formattedDate = [dateFormatter stringFromDate:datePicked];

}

并根据您的要求设置dateFormatter。 在更改日期时,它将为您提供您在日期选择器中选择的日期。

我希望这对您的日期选择器有所帮助。

【讨论】:

    【解决方案2】:

    我终于发现了我的错误..问题出在我的代码中,我为 datePicker 设置了最大值和最小值。删除了设置最大值和最小值的代码,代码可以正常工作..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      相关资源
      最近更新 更多