2012-05-03 2 views
4

동일한 datepicker.i에서 다른 날짜를 얻으려면 fromdate 및 todate.how라는 두 개의 텍스트 필드가 있습니다. 날짜가 변경 될 때 두 텍스트 필드에서 동일한 날짜를 얻는 것을 시도한 뭔가 시도했습니다.동일한 UIDatePicker 두 TextFields 사용

-(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

당신은 textFieldDidBeginEditing:가 호출 될 때

그런 다음를 읽을 수 ... textFieldDidBeginEditing: 방법 그들은 쉽게 식별 할 수있는 각각의 텍스트 필드에 대한 tag 속성을 설정과 함께 모두 당신의 TextField의에 대한 UITextFieldDelegate 프로토콜을 구현할 수

- (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

을 확인하고 NSInteger에 할당 할 때 경고를 보여주고와. – ichanduu

1

이가의 UITextField에서 사용할 수 inputview 속성을 사용하는 것입니다 달성하기 위해 가장 좋은 방법은 도움이되기를 바랍니다. Outlet 또는 프로그래밍 &을 사용하여 날짜 선택기를 초기화하면 텍스트 필드의 대리자 메서드 인 "textFieldDidBeginEditing :"에서 inputView로 지정됩니다. 날짜를 지정하기 위해 텍스트 필드에 실제로 inputview를 지정하기 전에 자신 만의 비즈니스 로직을 사용할 수 있습니다.

6

이 구현 가능한 더 우아한 방법 UITextFieldDelegate없이 textFieldDidBeginEditing:

그냥 textField.tag는 int이며 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]; 
    } 
}