【问题标题】:When user press button show datepicker view and select date and then display as button title and further close datepicker view当用户按下按钮显示日期选择器视图并选择日期然后显示为按钮标题并进一步关闭日期选择器视图
【发布时间】:2013-04-08 11:24:19
【问题描述】:

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

是的,NSLog 是正确的日期。

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

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

【问题讨论】:

  • 这个问题很难理解。什么不工作?是不是 datePicker 没有显示?
  • 在 NSLog 中打印是否正确?
  • 我试过你的代码,它可以工作。我认为你需要编辑你的帖子并添加你必须释放选择器视图和连接到按钮的操作的代码。
  • DOBbutton 是在 .xib 中还是以编程方式?

标签: iphone ios ios5 uibutton uidatepicker


【解决方案1】:

在你的按钮动作中写下这段代码

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

【讨论】:

    【解决方案2】:

    试试这个

    替换它

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

       DOBbutton.titleLabel.text =dateString;
    

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

    【讨论】:

    • 请提供您的日期选择器代码,它是在 Xib 中还是以编程方式?
    • - (IBAction)selectDOB:(id)sender { [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]; [datePicker setHidden:YES]; //DOBbutton.titleLabel.text=dateString; }
    • 设置 datePicker.hidden=YES;
    • 在 viewdidload 中设置 [datePicker addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];并在这个 valueChanged 方法中写入 hidden=YES
    【解决方案3】:

    设置标题为 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 2023-03-03
      相关资源
      最近更新 更多