4

fromdateとtodateの2つのテキストフィールドがあります。同じdatepickerから異なる日付を取得する方法。日付が変更されたときに両方のテキストフィールドで同じ日付を取得することになったものを試しました。

-(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];
}
4

3 に答える 3

7

UITextFieldDelegateとなしでこれを実装するために利用可能なよりエレガントな方法textFieldDidBeginEditing:

チェックするだけで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];
    }
}
于 2014-07-07T11:55:42.923 に答える
4

両方のTextFieldsメソッドに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を特定する別の方法が必要になる場合がありますが、それはお任せします。

それが役に立てば幸い

于 2012-05-03T10:52:49.690 に答える
1

これを実現する最良の方法は、UITextFieldで使用可能なinputviewプロパティを使用することです。Outletまたはプログラミングを使用して日付ピッカーを一度初期化し、テキストフィールドのデリゲートメソッド「textFieldDidBeginEditing:」でinputViewとして割り当てます。日付の割り当てについては、実際にinputviewをテキストフィールドに割り当てる前に、独自のビジネスロジックを使用できます。

于 2012-05-03T12:23:33.550 に答える