为什么UIDatePicker填充两个不同的TextFields相同的值

时间:2019-04-20 16:28:17

标签: ios swift datepicker textfield

当我从The following types do not unify: (nat ⇒ complex) ⇒ nat set ⇒ complex (real ⇒ complex) ⇒ real set ⇒ complex 中选择值时,单击UIDatePicker后会显示该值,我的TextFields填写了相同的值

UITextField

我应该为每个TextField实施不同的datePicker吗?

1 个答案:

答案 0 :(得分:3)

您将两个操作添加到日期选择器。两个文本字段使用相同的日期选择器。因此,当任一文本字段的数据选择器值更改时,两个选择器都会被调用。由于两个选择器均被调用,因此两个文本字段都将使用新值进行更新。

只有一个选择。只需向日期选择器添加一个操作即可。然后在一个选择器中,更新当前是第一响应者的文本字段。

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
    }
}