Swift:使用UIDatePicker作为UITextField inputView不更新

agf*_*105 21 datepicker nsdate swift

我有一个文本字段,当它被选中时,弹出一个日期选择器而不是键盘,但它只在第一次更新今天的日期.用户更改日期,但文本字段不会继续更新.问题是什么?

这就是我调用Datepicker并控制输入到我的文本字段的日期的方法:

 @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)
}
Run Code Online (Sandbox Code Playgroud)

Ash*_*lls 57

您的handleDatePicker方法DatePicker每次调用时都会实例化一个新方法.您需要向函数添加一个参数以传入发送方(DatePicker在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)
}

@objc func handleDatePicker(sender: UIDatePicker) {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd MMM yyyy"
    textfieldjobdate.text = dateFormatter.string(from: sender.date)
}
Run Code Online (Sandbox Code Playgroud)