我面临以下问题:我的视图中有几个UITextField,其中一个(有效期)上有一个按钮,该按钮打开带有UIDatePicker的弹出窗口。回来后,我看到我的文本字段为空。 找到附加的屏幕录像。 另外,这是我使用的一段代码:
func showDatePickerPopUp() {
let dateVC = NavigationHelper.shared.getViewController("datePickerID") as! DatePickerPopUpViewController
dateVC.modalPresentationStyle = .overCurrentContext
present(dateVC, animated: false, completion: nil)
}
然后我通过按钮操作调用此方法:
@IBAction func expiryDateButtonTapped(_ sender: UIButton) {
showDatePickerPopUp()
}
当到期日期成为第一响应者时:
if textField == cardNumberTextField {
nameOnCardTextField.becomeFirstResponder()
} else if textField == nameOnCardTextField {
expiryDateTextField.becomeFirstResponder()
showDatePickerPopUp()
}
这是它的工作方式:Screen Recording
我该如何解决这个问题?
更新: 这是“完成”按钮的操作代码:
@IBAction func doneButtonTapped(_ sender: UIButton) {
dateFormatter.dateFormat = "MM/yyyy"
let dateString = dateFormatter.string(from: datePicker.date)
let vc = NavigationHelper.shared.getViewController("changeCard") as! ChangeCardViewController
vc.expiryDate = dateString
present(vc, animated: false, completion: nil)
}
答案 0 :(得分:1)
您应该在完成按钮的操作后关闭ChangeCardViewController
。当您再次展示控制器时,它将重新加载ChangeCardViewController
的所有视图。在doneButtonTapped
中编写以下代码:
@IBAction func doneButtonTapped(_ sender: UIButton) {
dismiss(animated: true, completion: nil)
}