1

我写了这段代码。但不工作...

是的 NSLog 是正确的日期。

Datepicker 还查看并选择日期。但是,当我选择日期时,我的按钮标题和日期选择器不会发生任何变化,而日期选择器仍会保留在屏幕上。当用户选择日期时,我也想隐藏...

实际上,当用户按下按钮然后选择日期并将标题设置为按钮并释放选择器视图时,我会显示日期选择器视图。我用的是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];
4

3 回答 3

4

在您的按钮操作中编写此代码

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];

外部按钮编写此代码

-(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;
}
于 2013-04-16T06:59:55.120 回答
1

尝试这个

代替它

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

   DOBbutton.titleLabel.text =dateString;

并确保按钮是否与您的 xib 连接

于 2013-04-16T07:06:23.363 回答
0

设置标题为 Done 的按钮,当用户选择 Done 时调用波纹管方法...

-(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];
}

这是我的自定义方法,可用于更改日期的格式并将其转换为字符串..

-(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;
}
于 2013-04-16T07:07:36.650 回答