在textfield上设置datepicker日期

时间:2013-08-09 12:16:34

标签: ios objective-c cocoa-touch

我正在使用核心数据将实体添加到数据库中。有一个计算年龄的字段。您可以使用选择器填写您的生日,并根据日期选择器中选择的内容设置文本字段的文本。还有另一个视图,您可以编辑的实体的详细视图。不幸的是,当选择器加载时,它会加载今天的日期,而不是已经设置的文本字段中的日期。有什么办法可以使用文本字段设置选择器的日期吗?该文本采用以下格式:1997年8月11日。如果我解释不好,请抱歉。基本上我想根据文本字段中的文本设置日期选择器的日期。

只是让你知道发生了什么:

- (void) dateChanged:(id)sender{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateStyle = NSDateFormatterLongStyle;
    birthdayTextField.text = [NSString stringWithFormat:@"%@",
                   [dateFormatter stringFromDate:birthdayDatePicker.date]];

    [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    NSString *startdate= [NSString stringWithFormat:@"%@",
                          [dateFormatter stringFromDate: birthdayDatePicker.date]];

    NSDate *End=[dateFormatter dateFromString:[dateFormatter stringFromDate:[NSDate date]]];

    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [gregorianCalendar components:NSYearCalendarUnit
                                                        fromDate:[dateFormatter dateFromString:startdate]
                                                          toDate:End
                                                         options:0];
    if(components.year > 0){
    ageTextField.text=[NSString stringWithFormat:@"%d",components.year];
    }
}

3 个答案:

答案 0 :(得分:1)

- (void)setDate:(NSDate *)date animated:(BOOL)animated

是在日期选择器上设置日期的功能。所以现在需要使用NSDate将文本字段中设置的日期作为日期对象传递。如果文本字段的输入是字符串,那么您可以这样做:

NSString *dateString = @"09-08-2013";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];

现在将其传递给第一个函数。希望这有帮助。

答案 1 :(得分:1)

-(void)buttonPressed:(id)sender
{
    datePicker = [[UIDatePicker alloc] init];
    datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    datePicker.datePickerMode = UIDatePickerModeDate;

    [datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
    CGSize pickerSize = [datePicker sizeThatFits:CGSizeZero];
     pickerToolbar.frame = CGRectMake(0,200, 320, 44);

    datePicker.frame = CGRectMake(0.0, 244, pickerSize.width, 460);
    datePicker.backgroundColor = [UIColor blackColor];
    [self.view addSubview:datePicker];

- (void) dateChanged:(id)sender
{
 NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
birthdayTextField.text = [NSString stringWithFormat:@"%@",
                   [dateFormatter stringFromDate:birthdayDatePicker.date]];
}

希望这对你有用......

答案 2 :(得分:0)

  NSDateFormatter *dateFormat;
      dateFormat = [[NSDateFormatter alloc] init];
     [dateFormat setDateFormat:@"h:mm a"];
      NSDate *exampleDateFromString =[dateFormat dateFromString:@"8:48 AM"]; 
      date-picker.minimumDate=exampleDateFromString;
     [date-picker setDate:exampleDateFromString];