2012-05-03 1 views
4

同じdatepicker.iから2つのテキストフィールド、fromdateとtodate.howを使って別の日付を取得しようとしています。日付が変更されたときに両方のテキストフィールドで同じ日付が得られました。同じUIDatePickerを2つのTextFieldに使用

-(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:方法、彼らは簡単に識別されているように、各TextFieldに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の例何かを見つけることができるようにすることを編集開始し、設定したテキストフィールドのタグしかし、テキストフィールドを編集可能にすることができない場合(キーボードを上げることはできません)、textFieldが更新された日付を取得する必要がある他の方法が必要になるかもしれませんが、残しておきます。

は、これを達成するための

+0

をチェックするとNSIntegerが警告を示しているにそれを割り当てるときにint型です。 – ichanduu

1

最善の方法は、UITextFieldのに利用できるinputviewプロパティを使用することでお役に立てば幸いです。アウトレットまたはプログラミング&を使用して日付ピッカーを初期化し、テキストフィールドの代理メソッド "textFieldDidBeginEditing:"のinputViewとして割り当てます。日付を割り当てるために、実際にinputviewをテキストフィールドに割り当てる前に、独自のビジネスロジックを使用することができます。

6

UITextFieldDelegatetextFieldDidBeginEditing:

せずにこれを実現するための可能な、よりエレガントな方法だけでtextField.tag 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]; 
    } 
} 
関連する問題