2012-05-03 40 views
4

我有两个textfields fromdate和todate.how从同一个datepicker.i获取不同日期尝试了一些最终在日期更改时在两个文本字段中获得相同日期的情况。对两个TextField使用相同的UIDatePicker

-(IBAction)dateValueChanged:(id)sender 
{ 
     UIDatePicker *picker = (UIDatePicker *)sender; 
     NSDate *dateSelected1 = [picker date]; 
     NSDate *dateSelected2 = [picker date]; 

     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
     [dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
     self.fromTextField.text = [dateFormatter stringFromDate:dateSelected1]; 
     self.toTextField.text = [dateFormatter stringFromDate:dateSelected2]; 
} 

回答

2

您可以实现的UITextFieldDelegate协议为您的的TextField textFieldDidBeginEditing:方法一起,使他们很容易辨认设置tag属性为每个文本字段...

然后当textFieldDidBeginEditing:被调用时,你可以阅读文本字段的标签已开始编辑,并设置为一个全球性的价值,所以你可以找出文本框的日期选择器应该改变..例如:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 

    someGlobalNSInteger = textField.tag; //the current text field tag is now globally set 

} 

-(IBAction)dateValueChanged:(id)sender { 
    UIDatePicker *picker = (UIDatePicker *)sender; 
    NSDate *dateSelected1 = [picker date]; 
    //NSDate *dateSelected1 = [picker date]; 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy"]; 

    //self.fromTextField.text = [dateFormatter stringFromDate:dateSelected1]; 
    //self.toTextField.text = [dateFormatter stringFromDate:dateSelected2]; 

    UITextField *activeTextField = (UITextField*)[self viewWithTag:someGlobalNSInteger]; //gets text field what is currently being edited 
    [activeTextField setText:[dateFormatter stringFromDate:dateSelected1]]; 

} 

然而,如果你不允许文本字段是可编辑的(所以它不能带来键盘),你可能需要一些其他的方法来弄清楚什么textField应该得到更新的日期,但我会把它留给你。

希望它可以帮助

+0

textField.tag为int并将其分配给NSInteger的时显示一个警告。 – ichanduu

1

实现这一目标是使用中的UITextField可用inputview财产的最好方式。使用Outlet或编程&将文本字段的委托方法“textFieldDidBeginEditing:”分配为inputView,即可初始化日期选择器。为了分配日期,您可以在将输入视图分配给文本字段之前使用自己的业务逻辑。

6

可实现这一点的更优雅的方式,而不UITextFieldDelegatetextFieldDidBeginEditing:

只是检查firstResponder

- (IBAction)dateValueChanged:(id)sender 
{ 
    NSDate *dateSelected = [picker date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy"]; 

    if ([firstTextField isFirstResponder]) 
    { 
     firstTextField.text = [dateFormatter stringFromDate:dateSelected]; 
    } 
    else if ([self.endTextField isFirstResponder]) 
    { 
     secondTextField.text = [dateFormatter stringFromDate:dateSelected]; 
    } 
} 
相关问题