Ios swift未使用UIDatePicker更新textfield.text

Ios swift未使用UIDatePicker更新textfield.text,ios,swift,uitextfield,uidatepicker,Ios,Swift,Uitextfield,Uidatepicker,在swift中,我以编程方式声明了一个textField override func viewDidLoad() { super.viewDidLoad() textField3.delegate = self textField3.returnKeyType = UIReturnKeyType.Next; datePicker.datePickerMode = UIDatePickerMode.Date datePicker.addTarget(self, a

在swift中,我以编程方式声明了一个textField

override func viewDidLoad() {
    super.viewDidLoad()
textField3.delegate = self

    textField3.returnKeyType = UIReturnKeyType.Next;
    datePicker.datePickerMode = UIDatePickerMode.Date
    datePicker.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged)
    textField3.inputView = datePicker


}

 func handleDatePicker(sender: UIDatePicker) {

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

我发现的所有其他问题与interface builder的交易类似,但都没有帮助。我将如何以编程方式修复此问题

Xcode 9•Swift 4

@objc func handleDatePicker(_ datePicker: UIDatePicker) {
    textField3.text = datePicker.date.formatted
}

override func viewDidLoad() {
    super.viewDidLoad()
    datePicker.addTarget(self, action: #selector(handleDatePicker), forControlEvents: .valueChanged)
}


Swift 3版本@Leo Dabus回答:

func handleDatePicker(sender: UIDatePicker) {
        textField3.text = datePicker.date.formatted
    }

override func viewDidLoad() {
    super.viewDidLoad()
    datePicker.addTarget(self, action: #selector(handleDatePicker(sender:)), for: UIControlEvents.valueChanged)
}

extension Date {
    var formatted: String {
        let formatter = DateFormatter()
        formatter.dateFormat = "EEEE, dd MMM yyyy HH:mm:ss Z"
        return  formatter.string(from: self as Date)
    }
}
在中,Swift 4
确认到UITableViewDelegate
使txtFChequeDate.delegate=self

func textFieldDidBeginEditing(_ textField: UITextField) {

    let datePickerView = UIDatePicker()
    datePickerView.datePickerMode = .date
    txtFChequeDate.inputView = datePickerView
    datePickerView.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged)

    if txtFChequeDate.text == "" {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd MMM yyyy"
        txtFChequeDate.text = dateFormatter.string(from: Date())
    }
}

@objc func handleDatePicker(sender: UIDatePicker) {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd MMM yyyy"
    txtFChequeDate.text = dateFormatter.string(from: sender.date)
}

您是否尝试过分别创建日期选择器和文本字段,将文本字段的inputView设置为日期选择器,将日期选择器的委托设置为self,并使用didSelectRow方法更新文本字段文本?对不起,我不太明白您的意思。我不知道DatePickers有委托,我也不确定是否有任何didSelectRow方法可用于uitextfields@LeonardoSavioDabus我注意到DatePicker中有一个iAction,在编辑更改时调用它。如果没有iAction,我如何调用类似的函数。谢谢,IBAction怎么了?只需从iBaction调用您的方法目前我已经按照您的方式设置了所有内容,但是我更改了函数,因此没有更改
textField3.text
I只是
println(“hello”)
。不打印日志,当我在日志上放置断点时,不会调用它。我将
UIControlEvents.ValueChanged
更改为
UIControlEvents.AllEvents
,但它仍然没有将任何内容打印到日志中,断点显示仍然没有调用此函数。它没有任何参数,我已经删除了
,这样选择器就不会认为我在调用带有参数的函数。非常感谢你的帮助。
func textFieldDidBeginEditing(_ textField: UITextField) {

    let datePickerView = UIDatePicker()
    datePickerView.datePickerMode = .date
    txtFChequeDate.inputView = datePickerView
    datePickerView.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged)

    if txtFChequeDate.text == "" {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd MMM yyyy"
        txtFChequeDate.text = dateFormatter.string(from: Date())
    }
}

@objc func handleDatePicker(sender: UIDatePicker) {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd MMM yyyy"
    txtFChequeDate.text = dateFormatter.string(from: sender.date)
}