6

ここに画像の説明を入力

UIDatePickerアクションシートで選択した時間を使用して表示するiPhoneアプリを作成しています。アクションシートでは、時間が 10 分間隔で表示されます。

textfieldスクロールすると値が正しく設定されますDatepicker

アクション シートをスクロールしない場合は 、選択ボタンを直接クリックし、テキスト フィールドで現在の時刻 ( 11:56) を設定しますが、アクション シート ( 11:50) で選択します。( textfield) は誤った値を示します。

textfieldの値 ( )を設定するにはどうすればよいですか11:50。解決策を教えてください。

4

4 に答える 4

1

編集 ピッカーでUIControlEventValueChangedイベントを処理するようにクラスを作成します。この行のViewDidLoadメソッドを追加するか、アクションシートが表示されたら次のように追加します。

  [picker addTarget:self action:@selector(dateChanged:) 
          forControlEvents:UIControlEventValueChanged];

これで、日付が変更されたときにセレクターが呼び出されます

アップデート

- (void) dateChanged:(id)sender{
    // handle date changes and set in textField
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here
    self.dateTexField.text = strdate;
}

上記のメソッドが呼び出されない場合は、日付が変更されないことを意味するため、常にtextFieldにデフォルトの日付を設定してください。


日付を文字列オブジェクトに変換します

アップデート

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here

次に、値を次のようにtextFieldに設定します。

  self.dateTextField.text = strdate;
于 2012-08-24T07:18:56.937 に答える
1

選択ボタンを押した後、日付ピッカーからdateSelectedを設定するだけです....

NSDate *date = datePicker.date;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy"];    
NSString *dateString = [formatter stringFromDate:date];
yourTxtField.text = dateString;
于 2012-08-24T07:45:42.680 に答える
0

最も簡単な方法は、UIDatePicker を inputView として持つ TextField に、完了ボタンのあるツールバーを添付することだと思います。TextViewDidBeginEditing で参照を維持することにより、現在の TextField を追跡します。次に、完了ボタンで次のようにします。

if (_currentTextField == _myTextFieldThatUsesADatePicker) {
    self.myDateProperty = _myDatePicker.date;
}
于 2013-01-30T15:44:23.427 に答える
0

私はこの方法が間違っていることを知りませんが、それは私にとってはうまくいきます

-(void)selectedTime{
    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
//    [outputFormatter setDateFormat:@"h:mm a"];
    [outputFormatter setDateFormat:@"HH:mm:ss"];
    selectedTime = [outputFormatter stringFromDate:datePicker.date];
    NSArray *temp=[selectedTime componentsSeparatedByString:@":"];
    NSLog(@"%@",temp);
    NSInteger mins=[[temp objectAtIndex:1]integerValue];
    //check your interval here
    if (mins<=29) {
        selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"00",@"00"];
    }else if (mins>=31 && mins<=59){
        selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"30",@"00"];
    }else{
//        selectedTime = [outputFormatter stringFromDate:datePicker.date];
    }
    if (self.delegate && [self.delegate respondsToSelector:@selector(SelectedValue:)]) {
        [self.delegate SelectedValue:selectedTime];
    }
    [self.popupController dismiss];
}

私のインターバルは30分です

于 2016-02-17T13:09:51.280 に答える