每次使用日期选择器保存日期时,以下代码都会导致崩溃。新日期将被保存,但不会在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。此链接可能有助于您理解这一点。