我有两个要输入时间的文本字段。 我已经让其中一个文本字段工作,因此 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 相同的 pickerView 的文本字段,@CZ54 的答案是正确的,即
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中选择行,通过follow你就可以执行相关操作
if activeTextField == fromTextField {
//action
} else if activeTextField == toTextField {
//action
}
关于ios - 具有相同日期选择器的两个文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47529158/