SWIFT - UIDatePicker - 开始和结束日期选择,但无法弄清楚如何将两个日期调用到两个不同的文本框中

时间:2015-01-29 19:25:57

标签: ios swift uidatepicker

我在tableview控制器中有一个静态单元格,我要求用户将开始和结束日期放入两个单独的文本字段中。我正在使用UIDatePicker,当按下文本框时,弹出日期选择器控制器。

我可以为这两个框调用datepicker,但只能在第一个框中显示日期。我的编码如下。我知道我只编写了第一个显示的框,并且想如果我只是使用相同的编码,第二个框会显示但是我收到错误。如何更改我的代码,handleDatePicker将执行开始日期和结束日期?

@IBAction func startDate(sender: UITextField) {
    var startDatePickerView  : UIDatePicker = UIDatePicker()
    startDatePickerView.datePickerMode = UIDatePickerMode.Date
    sender.inputView = startDatePickerView
    startDatePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents:UIControlEvents.ValueChanged)
}

func handleDatePicker(sender: UIDatePicker) {
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd MMM yyyy"
    startDateTextLabel.text = dateFormatter.stringFromDate(sender.date)
}

@IBAction func endDate(sender: UITextField) {
    var endDatePickerView  : UIDatePicker = UIDatePicker()
    endDatePickerView.datePickerMode = UIDatePickerMode.Date
    sender.inputView = endDatePickerView
    endDatePickerView.addTarget(self, action: Selector("handleDatePicker"), forControlEvents: UIControlEvents.ValueChanged)
}

1 个答案:

答案 0 :(得分:4)

你可以使用类似的东西:

var timeSelected: UITextField!

@IBAction func pickUpDate(sender: UITextField) {

    var datePickerView  : UIDatePicker = UIDatePicker()
    datePickerView.datePickerMode = UIDatePickerMode.Time
    sender.inputView = datePickerView

    timeSelected = sender
    ***CODE***

    datePickerView.addTarget(self, action: "handleDatePicker:", forControlEvents: UIControlEvents.AllEvents)
}

所以handleDatePicker函数:

func handleDatePicker(sender: UIDatePicker) {
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "HH:mm"

    timeSelected.text = dateFormatter.stringFromDate(sender.date)
}

如您所见,如果您单击第一个UITextField或第二个UITextField,timeSelected将会更改,因此timeSelected.text将替换正确值中的值。你只需要一个pickUpDate函数用于两个textFields(从你的故事板只需CTRL +鼠标指针从textField到@IBAction块)

希望这有帮助

干杯