我想将一个单元作为参数传递给函数datePickerChanged(sender: UIDatePicker)
以下是代码的一部分,我想在那里实现,有人可以建议我如何实现这一目标吗?
class DailyTimesTVC: UITableViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("DailyTimesTableViewCell", owner: self, options: nil)?.first as! DailyTimesTableViewCell
cell.datePicker.addTarget(self, action: #selector(datePickerChanged), for: .valueChanged)
}
func datePickerChanged(sender: UIDatePicker){
// Here I would like to access the cell
}
}
答案 0 :(得分:4)
我建议使用回调闭包
在DailyTimesTableViewCell
中创建通过callback
实例的UIDatePicker
变量
var callback : ((UIDatePicker) -> ())?
在DailyTimesTableViewCell
中添加观察者awakeFromNib
datePicker.addTarget(self, action: #selector(datePickerChanged), for: .valueChanged)
在DailyTimesTableViewCell
中添加调用回调的操作方法
func datePickerChanged(sender: UIDatePicker) {
callback?(sender)
}
在DailyTimesTVC
cellForRow
中分配回调闭包
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("DailyTimesTableViewCell", owner: self, options: nil)?.first as! DailyTimesTableViewCell
cell.callback = { datePicker in
// do something with the date picker
}
return cell
}
有没有特别的理由为细胞使用额外的笔尖?您可以直接在Interface Builder的表视图中创建多个单元格。