2012-03-23 119 views
0

我有一个日期选择器。我想让用户在“Von”文本字段(明天上午9点开始)中选择日期和时间,然后直到textfield“bis”(1.5小时后开始)。UIDatePicker与2个文本框(从/直到日期)不能设置正确的日期在“直到”文本域

一切工作正常。但是当我点击“冯”文本框。我的日期选择器为自己设定了正确的时间。

下面是一些截图: from textfielduntil textfield

viewDidLoad中:

NSDate *today = [NSDate date]; 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    [gregorian setLocale:[NSLocale currentLocale]]; 

    NSDateComponents *nowComponents = [gregorian components:NSYearCalendarUnit|NSMonthCalendarUnit| NSWeekdayCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:today]; 


    [nowComponents setWeek: [nowComponents week]]; 
    [nowComponents setDay:[nowComponents day]+1]; 
    [nowComponents setHour:9]; 
    [nowComponents setMinute:0]; 
    [nowComponents setSecond:0]; 

    today = [gregorian dateFromComponents:nowComponents]; 

    NSDate *tomorrowat9am = [gregorian dateFromComponents:nowComponents]; 
    //DatePicker wird erstellt 

    self.thePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 152, 325, 300)]; 
    self.thePicker.datePickerMode = UIDatePickerModeDateAndTime; 
    [thePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged]; 



    //starts from tomorrow at 9 am 
    NSDate *pickereinstelldate= tomorrowat9am; 

    [self.thePicker setDate:pickereinstelldate]; 

    //set the right format 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd.MM.yyyy HH:mm"]; 
    NSString *datum =[dateFormatter stringFromDate:self.thePicker.date]; 


//set the date at textfield "bis" to 1.5 hours later 

    NSDate *neuesdatum = [beginningOfWeek dateByAddingTimeInterval:3600*1.5];   NSString *neuesd = [dateFormatter stringFromDate:neuesdatum]; 


    //set the textfield with the new date 
    tfVon.text=datum; 
    tfBis.text=neuesd; 

    [self.view addSubview:thePicker]; 
    self.thePicker.hidden=YES; 
    tfVon.inputView=thePicker; 
    tfBis.inputView=thePicker; 
} 

这里是动作:

-(IBAction)dateChanged 
{ 
    self.date = [thePicker date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd.MM.yyyy HH:mm"]; 
    NSString *datum =[dateFormatter stringFromDate:self.date]; 
    NSDate *neuesdatum = [date dateByAddingTimeInterval:3600*1.5]; 
    NSString *neuesd = [dateFormatter stringFromDate:neuesdatum]; 

    //when i click on "Von" textfield 
    if (dateBOOL==YES) 

    { 
     tfVon.text=datum; 

     tfBis.text=neuesd; 

    } 
    //when i click on "bis" textfield 
    if (dateBOOL==NO) { 
     tfBis.text=neuesd; 

     }  

} 

这里是我我datebool设置为NO:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 


    if (textField==tfVon) 
    { 

     dateBOOL=YES; 
     self.thePicker.hidden=NO; 

     return YES; 
    } 
    if (textField==tfBis) 
    { 

     dateBOOL=NO; 
     self.thePicker.hidden=NO; 
     return YES; 
    } 

    } 
return YES; 

} 
+1

不清楚的问题。请说清楚 – Hiren 2012-03-23 10:11:47

+0

您什么时候显示日期选择器?你在哪里设置'dateBOOL'为'NO'?你可以发布一些代码吗? – sch 2012-03-23 10:34:16

+0

当我选择textxfield(我更新了我的代码)时,显示我的日期选择器。在textfield中的记事本应该被限制为 – 2012-03-23 12:52:10

回答

0

您发布的最后一个方法永远不会让它最后返回YES。你有一个额外的}。

“我的日期选择器为自己设定了正确的时间。” 您的问题并不完全清楚,但从我收集的内容来看,您正尝试在选择“bis”文本框后将日期选择器设置为正确的时间。

[datePicker setDate:neuesdatum animated:NO];

如果您尝试将bis文本框设置为新日期,则必须再次使用dateformatter并将文本框设置为该新日期。

以下哪一行(neuesd)给你当前的值? NSString * neuesd = [dateFormatter stringFromDate:neuesdatum];

+0

我删除了一些不重要的代码,并且我忘记删除}符号。 nsstring * neuesd从datepicker获取值并将其设置为1.5小时后。当我点击“bis”文本框时,我想将datepicker日期设置为neuesd。所以我可以在1.5小时后开始 – 2012-03-24 09:20:28