无法识别的选择器发送到实例Swift 2.1-日期选择器



每次使用日期选择器保存日期时,以下代码都会导致崩溃。新日期将被保存,但不会在XCode终止之前。我的"DatePickerValueChanged"有问题。请告诉我为什么不起作用:

代码:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self
    tableView.estimatedRowHeight = tableView.rowHeight
    tableView.rowHeight = UITableViewAutomaticDimension
    //hide blank cells in table view
    let backgroundView = UIView(frame: CGRectZero)
    tableView.tableFooterView = backgroundView

    let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "addNewTask")
    self.navigationItem.rightBarButtonItem = addButton
    setupUIElements()
    datePicker.addTarget(self, action: "datePickerValueChanged", forControlEvents: UIControlEvents.ValueChanged)

}

功能:

@IBOutlet weak var datePicker: UIDatePicker!
@IBAction func datePickerValueChanged(sender: UIDatePicker) {
    saveTHeCourseWork("dueDate", value: sender.date) // selected date value is saved as the value for "dueDate"
}

错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Program4.DetailViewController datePickerValueChanged]: unrecognized selector sent to instance 0x7fce737baa40

您的函数有一个参数。这意味着它需要在函数中发送一些内容。这是您的sender。当您添加目标时,您需要确保您的发件人被发送到该功能。要做到这一点,只需在选择器中添加一个分号。

datePicker.addTarget(self, action: "datePickerValueChanged:", forControlEvents:.ValueChanged)

看看我是如何在datePickerValueChanged后面添加分号的。正在向函数发送datePicker。此链接可能有助于您理解这一点。

最新更新