两个带有同一日期选择器的Textfield



我有两个我想输入时间的文本字段。我已经有一个文本字段可以正常工作,因此InputView是一个日期选择器,但是,我无法弄清楚是否有一种简单的方法来更改我的代码输入字段。

这是我的代码:

func createDatePicker(){
    let toolbar = UIToolbar()
    toolbar.sizeToFit()
    //done button
    let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed))
    toolbar.setItems([done], animated: false)
    fromTextField.inputAccessoryView = toolbar
    fromTextField.inputView = picker

    picker.datePickerMode = .time
    picker.minuteInterval = 15
}
@objc func donePressed(){
    let formatter = DateFormatter()
    formatter.dateStyle = .none
    formatter.timeStyle = .short
    let dateString = formatter.string(from: picker.date)
    fromTextField.text = "(dateString)"
    self.view.endEditing(true)
}

除了仅制作这两个功能的副本外,使该代码适用于totextfield的最佳方法是什么?

用于创建与inputView @cz54的答案相同的pickerview的两个textfields是正确的,即

func createDatePicker(forField field : UITextField){
    let toolbar = UIToolbar()
    toolbar.sizeToFit()
    //done button
    let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed))
    toolbar.setItems([done], animated: false)
    field.inputAccessoryView = toolbar
    field.inputView = picker

    picker.datePickerMode = .time
    picker.minuteInterval = 15
}
//later
self.createDatePicker(forField: fromTextField)
self.createDatePicker(forField: toTextField)

并根据活动的文本字段从Pickerview获取数据,您必须创建一个类型UITextField的变量并将其分配如下:

var activeTextField: UITextField!
func textFieldDidBeginEditing(_ textField: UITextField) {
     activeTextField = textField
}

以及每当在Pickerview中选择行时,您可以执行相关操作

if activeTextField == fromTextField {
     //action
} else if activeTextField == toTextField {
     //action
}

您可以做:

func createDatePicker(forField field : UITextField){
    let toolbar = UIToolbar()
    toolbar.sizeToFit()
    //done button
    let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed))
    toolbar.setItems([done], animated: false)
    field.inputAccessoryView = toolbar
    field.inputView = picker

    picker.datePickerMode = .time
    picker.minuteInterval = 15
}
//later
self.createDatePicker(forField: fromTextField)
self.createDatePicker(forField: toTextField)

最新更新