Swift:使用UIDatePicker作为UITextField inputView不更新 [英] Swift: using UIDatePicker as UITextField inputView not updating
问题描述
我有一个文本框,当它被选中时,弹出一个日期戳,而不是一个键盘,但是它只会在今天的第一次更新。用户更改日期,但文本字段不会继续更新。这是什么问题?
I have a textfield and when it is selected a datepicker pops up instead of a keyboard, but it only updates with todays date the first time. The user changes the date, but the textfield does not continue to update. What is the problem?
这是我如何调用Datepicker并控制输入到我的文本字段的日期:
This is how I call the Datepicker and control the date being inputted into my textfield:
@IBAction func dp(sender: UITextField) {
var DatePickerView : UIDatePicker = UIDatePicker()
DatePickerView.datePickerMode = UIDatePickerMode.Date
textfieldjobdate.inputView = DatePickerView
DatePickerView.addTarget(self, action: Selector("handleDatePicker"), forControlEvents: UIControlEvents.ValueChanged)
}
func handleDatePicker() {
var DatePickerView : UIDatePicker = UIDatePicker()
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"
textfieldjobdate.text = dateFormatter.stringFromDate(DatePickerView.date)
}
推荐答案
您的 handleDatePicker
方法在每次调用时都会实例化一个新的 DatePicker
。您需要在函数中添加一个参数,以传入发件人(在$ c c c c c c c c c c c c c c p c c c c c c c c c c c c c c c c p c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c) p>
Your handleDatePicker
method is instantiating a new DatePicker
each time it's called. You need to add a parameter to the function to pass in the sender (the DatePicker
created in func dp
)
@IBAction func dp(_ sender: UITextField) {
let datePickerView = UIDatePicker()
datePickerView.datePickerMode = .date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged)
}
func handleDatePicker(sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"
textfieldjobdate.text = dateFormatter.string(from: sender.date)
}
这篇关于Swift:使用UIDatePicker作为UITextField inputView不更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!