【问题标题】:text field with date picker crashes on date changed swift带有日期选择器的文本字段在日期更改时崩溃 swift
【发布时间】:2018-08-11 01:23:53
【问题描述】:

我在设置文本字段时遇到问题。目标是代替键盘,我希望它有滑轮来指示时间。所以在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)
}

现在打开文本字段看起来很棒,时间滚动条会立即弹出,看起来很棒(Woot!)。但是当我更改时间时,应用程序崩溃(NSException)。我知道这通常发生在未正确设置连接时,但我无法弄清楚SelectortextField 应该触发函数datePickerValueChanged 的连接。场景加载良好,只是当我更改日期时,我得到了 NSException。

我也试过有/没有@objc函数标签

我找到了其他三个类似问题的解决方案,但它们似乎对我不起作用(可能已经过时)。链接:

UIDatePicker crashing application

Inputting DatePicker in TextField problems

UITextField with DatePicker crashes

任何想法/想法将不胜感激。

【问题讨论】:

  • Selector("datePickerValueChanged")更改为#selector(datePickerValueChanged)并将DatePickerView.date更改为sender.date并删除此代码let DatePickerView: UIDatePicker = UIDatePicker()

标签: ios swift xcode datepicker textfield


【解决方案1】:

要修复崩溃,请从

更改您的选择器
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)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多