我在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)
}
答案 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块)
希望这有帮助
干杯