DatePicker未选择正确的日期

时间:2013-01-07 06:24:08

标签: objective-c ios date datepicker

我的Button中有一个view。点按Button即可获得datepicker默认为今天的日期,用户可以选择他们想要的日期搜索事件。 问题是,无论我选择哪个日期,它总是返回当天,并将其添加到我放在mu TextField内的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只给我当前日期,即使我选择了任何其他日期

1 个答案:

答案 0 :(得分:0)

我终于发现了我的错误..问题出在我的代码中,我设置了datePicker的最大值和最小值。重新设置了代码设置最大值和最小值的代码。