为什么UIDatePicker会填充两个不同的TextField相同的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么UIDatePicker会填充两个不同的TextField相同的值相关的知识,希望对你有一定的参考价值。
当我从点击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吗?
答案
您将两个操作添加到日期选择器。两个文本字段使用相同的日期选择器。因此,当任一文本字段的数据选择器值发生更改时,将调用两个选择器。由于两个选择器都被调用,因此两个文本字段都会使用新值进行更新。
只需要一个选择。只需向日期选择器添加一个操作即可。然后在一个选择器中,更新当前是第一个响应者的文本字段。
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
}
}
以上是关于为什么UIDatePicker会填充两个不同的TextField相同的值的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 部分中的 NSDates 不反映来自 UIDatePicker 的日期
选择视图 0 时,UIDatePicker 将分钟设置为 1