2013-01-07 90 views
1

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

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

//显示日期选择器,而在按钮点击

- (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的Iam。 这里datePicker.date给我唯一的,即使我选择的任何其他日期

+0

你在IB中添加datePicker吗?如果是这样,你确定IBOutlet链接正确吗? – KDaker

+0

没有iam编程式地添加日期选择器 – SumiSadiq

+0

你确定它的'datePicker.date'值直接没有'[DateFormatter getDateStringddmmyyy:labelStartDate]'? – KDaker

回答

0

我发现我的错误在last..The问题是我的代码,我设置了datePicker.removing代码中的最大值和最小值的当前日期设置最大值和最小值的代码工作正常..

0

你需要初始化你的datepicker这样。

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

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

并为您的这个方法:ageChanged:

- (空)ageChanged:(ID)发送{

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

}

,并设置dateFormatter按您的要求。 ,同时更改日期,它会给你日期选择器中选择的日期。

我希望这会帮助你的日期选择器。

相关问题