当用户按下button显示dateselect器视图和selectdate,然后显示为button标题和进一步closuresdateselect器视图

我写了这个代码。 但不包括…

NSLog是正确的date。

Datepicker也看到并selectdate。 但是,当我selectdate没有任何改变我的button标题和dateselect留在屏幕上。 我也想隐藏当用户selectdate…

其实我显示dateselect器视图时,用户按下button,然后selectdate和设置标题button并释放select器视图。 我使用ios 5 …

[datePicker setHidden:NO]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:@"MM/dd/yyyy"]; NSString *dateString = [dateFormatter stringFromDate:[self.datePicker date]]; NSLog(@"\n" "theDate: |%@| \n" , dateString); [self.DOBbutton setTitle:dateString forState:UIControlStateNormal]; 

在你的button操作中写下这段代码

 UIActionSheet *dateActionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Done", nil]; [dateActionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent]; [dateActionSheet showInView:self.view]; [dateActionSheet setFrame:CGRectMake(0, 200, 320, 383)]; UIDatePicker *dp = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 80, 100, 116)]; dp.datePickerMode = UIDatePickerModeTime; // NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; // [dateFormat setDateFormat:@"HH:mm:ss"]; NSDate *eventDate = dp.date; NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; [timeFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; [timeFormat setDateFormat:@"HH:mm"]; timeString = [timeFormat stringFromDate:eventDate]; [ dp addTarget: self action: @selector(dateChanged:) forControlEvents:UIControlEventValueChanged ]; [ self.view addSubview: dp ]; // txtProposeTime.font = [ UIFont fontWithName: @"Arial" size: 9.0 ]; // txtProposeTime.textColor = [ UIColor blackColor ]; txtProposeTime.text = timeString; [dp setDatePickerMode:UIDatePickerModeTime]; [dateActionSheet addSubview:dp]; 

外面的button写这个代码

 -(void) dateChanged: (id)sender { UIDatePicker *control = (UIDatePicker *) sender; control.datePickerMode=UIDatePickerModeDate; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; // [dateFormat setDateFormat:@"MM/dd/yyyy HH:mm:ss a"]; NSDate *eventDate = control.date; NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; [timeFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; [timeFormat setDateFormat:@"dd/MM/yyyy"]; NSString *dateString = [timeFormat stringFromDate:eventDate]; txtMeetingDate.text=dateString; } 

尝试这个

代替它

  [self.DOBbutton setTitle:dateString forState:UIControlStateNormal]; 

  DOBbutton.titleLabel.text =dateString; 

并确保button连接到您的xib或不

设置button标题完成,当用户select完成时,称为波纹pipe方法…

 -(IBAction)btnDone_Clicked:(id)sender { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; NSString *dateString =[[yourDatePicker date] stringFromDateWithFormat:@"MM/dd/yyyy"]; [yourButton setTitle:dateString forState:UIControlStateNormal]; [yourDatePicker setHidden:YES]; [UIView commitAnimations]; } 

这是我自己的方法,这有助于更改date格式并将其转换为string..

 -(NSString*)stringFromDateWithFormat:(NSString*)strDateFormat{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //[formatter setTimeZone:[NSTimeZone systemTimeZone]]; [formatter setDateFormat:strDateFormat]; NSString *str = [formatter stringFromDate:self]; [formatter release]; return str; }