我有两个我想输入时间的文本字段。我已经有一个文本字段可以正常工作,因此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)