2

テキストフィールドの入力ビューとして日付ピッカーを設定しました。日付ピッカーの日付と間隔の最小値は 15 分です。これで、値が変更されたデリゲートでスピンを変更する際に適切な日付が得られます。しかし、ピッカーをスピンせず、デフォルトを最初に選択して完了ボタンをタップすると、現在の日付のみが表示されます。デフォルトでピッカーに表示される日付を教えてくれると思います。コードは次のとおりです。

class ViewController: UIViewController {

    @IBOutlet weak var timeField: UITextField!

    var datePicker:UIDatePicker!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    @IBAction func CallPicker(sender: UITextField) {

        let datePickerView:UIDatePicker = UIDatePicker()
        datePickerView.datePickerMode = UIDatePickerMode.DateAndTime
        datePickerView.minuteInterval = 15
        datePickerView.minimumDate = NSDate()
        datePicker = datePickerView

        let toolBar = UIToolbar()
        toolBar.sizeToFit()
        let spaceButton = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
        let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: "doneTapped")
        toolBar.setItems([spaceButton, doneButton], animated: false)
        toolBar.userInteractionEnabled = true

        sender.inputView = datePickerView
        sender.inputAccessoryView = toolBar
        datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
    }

    func doneTapped() {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateStyle = .MediumStyle
        dateFormatter.timeStyle = .MediumStyle
        timeField.text = dateFormatter.stringFromDate(datePicker.date)
        timeField.resignFirstResponder()
    }

    func datePickerValueChanged(sender: UIDatePicker) {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateStyle = .MediumStyle
        dateFormatter.timeStyle = .MediumStyle
        timeField.text = dateFormatter.stringFromDate(sender.date)
    }

}

シナリオ: 今が 8:42 だとします。日付ピッカーは最初のエントリとして 8:30 を表示しますが、完了ボタンをタップすると、現在の時刻である 8:42 のみが表示されます。ただし、スピンを転がして最初のエントリに戻るとうまく機能します。

4

3 に答える 3

0

日付が選択されているときに次のコードを使用してみてください

    let userDateFormate = NSDateFormatter()
    userDateFormate.dateFormat = "MMMM dd, yyyy"
    let dateString = userDateFormate.stringFromDate(date)

    dateFormate.dateFormat = "MMMM dd, yyyy"
    dateFormate.timeZone = NSTimeZone.init(forSecondsFromGMT: 0)
    let dateValue = dateFormate.dateFromString(dateString)
于 2016-08-09T07:26:39.663 に答える