带有日期选择器的文本字段在日期更改时崩溃 swift
text field with date picker crashes on date changed swift
我在设置文本字段时遇到问题。目标不是键盘,我希望它有滑轮来指示时间。所以在 viewDidLoad()
里面我放了:
let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.time
datePicker.addTarget(self, action: Selector("datePickerValueChanged"), for: UIControlEvents.valueChanged)
textField.inputView = datePicker
在 ViewController() 中我输入:
@objc func datePickerValueChanged(sender: UIDatePicker) {
let DatePickerView: UIDatePicker = UIDatePicker()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm"
textField.text = dateFormatter.string(from: DatePickerView.date)
}
现在打开文本字段看起来很棒,时间滚动条会立即弹出,看起来很棒(哇哦!)。但是当我更改时间时,应用程序崩溃(NSException)。我知道这通常发生在未正确设置连接时,但我无法弄清楚 textField
的 Selector
应该触发函数 datePickerValueChanged
的连接。场景加载正常,就在我更改日期时,我得到了 NSException。
我也试过with/without@objc
函数标签
我找到了其他三个类似问题的解决方案,但它们似乎对我不起作用(可能已过时)。链接:
任何 thoughts/ideas 将不胜感激。
要修复崩溃,请更改您的选择器
datePicker.addTarget(self, action: Selector("datePickerValueChanged"), for: UIControlEvents.valueChanged)
到
datePicker.addTarget(self, action: #selector(datePickerValueChanged), for: .valueChanged)
在你的方法中:
@objc func datePickerValueChanged(_ sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "hh:mm a" // or "HH:mm"
textField.text = dateFormatter.string(from: sender.date)
}
我在设置文本字段时遇到问题。目标不是键盘,我希望它有滑轮来指示时间。所以在 viewDidLoad()
里面我放了:
let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.time
datePicker.addTarget(self, action: Selector("datePickerValueChanged"), for: UIControlEvents.valueChanged)
textField.inputView = datePicker
在 ViewController() 中我输入:
@objc func datePickerValueChanged(sender: UIDatePicker) {
let DatePickerView: UIDatePicker = UIDatePicker()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm"
textField.text = dateFormatter.string(from: DatePickerView.date)
}
现在打开文本字段看起来很棒,时间滚动条会立即弹出,看起来很棒(哇哦!)。但是当我更改时间时,应用程序崩溃(NSException)。我知道这通常发生在未正确设置连接时,但我无法弄清楚 textField
的 Selector
应该触发函数 datePickerValueChanged
的连接。场景加载正常,就在我更改日期时,我得到了 NSException。
我也试过with/without@objc
函数标签
我找到了其他三个类似问题的解决方案,但它们似乎对我不起作用(可能已过时)。链接:
任何 thoughts/ideas 将不胜感激。
要修复崩溃,请更改您的选择器
datePicker.addTarget(self, action: Selector("datePickerValueChanged"), for: UIControlEvents.valueChanged)
到
datePicker.addTarget(self, action: #selector(datePickerValueChanged), for: .valueChanged)
在你的方法中:
@objc func datePickerValueChanged(_ sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "hh:mm a" // or "HH:mm"
textField.text = dateFormatter.string(from: sender.date)
}