为什么 UIDatePicker 填充两个不同的 TextField 相同的值
Why UIDatePicker fills two different TextFields same values
当我 select 来自 UIDatePicker
的值(点击 UITextField
后显示)时,我的 TextFields 填写了相同的值
override func viewDidLoad() {
super.viewDidLoad()
datepickerView = UIDatePicker()
datepickerView?.datePickerMode = .time
datepickerView?.addTarget(self, action: #selector(HomePageViewController.timeChangedForStartWork(datePicker:)), for: .valueChanged)
datepickerView?.addTarget(self, action: #selector(HomePageViewController.timeChangedForEndWork(datePicker:)), for: .valueChanged)
workHoursStartTextField.inputView = datepickerView
workHoursEndTextField.inputView = datepickerView
}
@objc func timeChangedForStartWork(datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
workHoursStartTextField.text = dateFormatter.string(from: datePicker.date)
}
@objc func timeChangedForEndWork(datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
workHoursEndTextField.text = dateFormatter.string(from: datePicker.date)
}
我应该为每个 TextField 实现不同的 datePicker 吗?
您向日期选择器添加了两个操作。两个文本字段使用相同的日期选择器。因此,当任一文本字段的数据选择器值发生变化时,都会调用 select 或。由于两个 selector 都被调用,所以两个文本字段都会更新为新值。
只要一个select。只需向日期选择器添加一项操作。然后在select或者,更新当前第一响应者的文本字段。
override func viewDidLoad() {
super.viewDidLoad()
datepickerView = UIDatePicker()
datepickerView?.datePickerMode = .time
datepickerView?.addTarget(self, action: #selector(timeChanged), for: .valueChanged)
workHoursStartTextField.inputView = datepickerView
workHoursEndTextField.inputView = datepickerView
}
@objc func timeChanged(datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let str = dateFormatter.string(from: datePicker.date)
if workHoursStartTextField.isFirstResponder {
workHoursStartTextField.text = str
} else {
workHoursEndTextField.text = str
}
}
当我 select 来自 UIDatePicker
的值(点击 UITextField
后显示)时,我的 TextFields 填写了相同的值
override func viewDidLoad() {
super.viewDidLoad()
datepickerView = UIDatePicker()
datepickerView?.datePickerMode = .time
datepickerView?.addTarget(self, action: #selector(HomePageViewController.timeChangedForStartWork(datePicker:)), for: .valueChanged)
datepickerView?.addTarget(self, action: #selector(HomePageViewController.timeChangedForEndWork(datePicker:)), for: .valueChanged)
workHoursStartTextField.inputView = datepickerView
workHoursEndTextField.inputView = datepickerView
}
@objc func timeChangedForStartWork(datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
workHoursStartTextField.text = dateFormatter.string(from: datePicker.date)
}
@objc func timeChangedForEndWork(datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
workHoursEndTextField.text = dateFormatter.string(from: datePicker.date)
}
我应该为每个 TextField 实现不同的 datePicker 吗?
您向日期选择器添加了两个操作。两个文本字段使用相同的日期选择器。因此,当任一文本字段的数据选择器值发生变化时,都会调用 select 或。由于两个 selector 都被调用,所以两个文本字段都会更新为新值。
只要一个select。只需向日期选择器添加一项操作。然后在select或者,更新当前第一响应者的文本字段。
override func viewDidLoad() {
super.viewDidLoad()
datepickerView = UIDatePicker()
datepickerView?.datePickerMode = .time
datepickerView?.addTarget(self, action: #selector(timeChanged), for: .valueChanged)
workHoursStartTextField.inputView = datepickerView
workHoursEndTextField.inputView = datepickerView
}
@objc func timeChanged(datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let str = dateFormatter.string(from: datePicker.date)
if workHoursStartTextField.isFirstResponder {
workHoursStartTextField.text = str
} else {
workHoursEndTextField.text = str
}
}