【发布时间】:2018-04-23 06:10:18
【问题描述】:
我有 4 个文本字段,我必须为 userServiceBooking 设置 fromDate、fromTime 和 toDate、toTime。现在,我需要用UIDatePicker 填充这些文本字段,但我无法显示文本,也不知道为什么;也许我做错了……
我发布了我尝试过的代码,请有人研究一下并告诉我该怎么做。
代码:
import UIKit
class ConfirmRequestViewController: UIViewController,UITextFieldDelegate {
@IBOutlet weak var fromDateTF: UITextField!
@IBOutlet weak var toDateTF: UITextField!
@IBOutlet weak var fromTimeTF: UITextField!
@IBOutlet weak var toTimeTF: UITextField!
var datePicker = UIDatePicker()
var dateFormatter = DateFormatter()
var toolBar = UIToolbar()
override func viewDidLoad() {
super.viewDidLoad()
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == fromDateTF {
datePicker.datePickerMode = .date
fromDateTF.inputView = datePicker
fromDateTF.text = dateFormatter.string(from: datePicker.date)
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonTapped))
toolBar.setItems([doneButton], animated: true)
fromDateTF.inputAccessoryView = toolBar
}
if textField == toDateTF {
datePicker.datePickerMode = .date
toDateTF.inputView = datePicker
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonTapped))
toolBar.setItems([doneButton], animated: true)
toDateTF.inputAccessoryView = toolBar
}
if textField == fromTimeTF {
datePicker.datePickerMode = .time
fromTimeTF.inputView = datePicker
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonTapped))
toolBar.setItems([doneButton], animated: true)
fromTimeTF.inputAccessoryView = toolBar
}
if textField == toTimeTF {
datePicker.datePickerMode = .time
toTimeTF.inputView = datePicker
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonTapped))
toolBar.setItems([doneButton], animated: true)
toTimeTF.inputAccessoryView = toolBar
}
}
@objc func doneButtonTapped(textField: UITextField) {
if textField == fromDateTF {
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
fromDateTF.text = dateFormatter.string(from: datePicker.date)
}
if textField == toDateTF {
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
toDateTF.text = dateFormatter.string(from: datePicker.date)
}
if textField == fromTimeTF {
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .medium
fromTimeTF.text = dateFormatter.string(from: datePicker.date)
}
if textField == toTimeTF {
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .medium
toTimeTF.text = dateFormatter.string(from: datePicker.date)
}
self.view.endEditing(true)
}
}
【问题讨论】:
-
这个方法被调用还是没有 doneButtonTapped
-
@Anbu.karthik 感谢您的快速回复。是的,它正在调用方法 doneButtonTapped() 但它不会进入我当前正在编辑的任何文本字段的 if 条件..
标签: ios uitextfield swift4 uidatepicker