Uitableview 如何将单元格传递给tableView swift 3中的函数

Uitableview 如何将单元格传递给tableView swift 3中的函数,uitableview,swift3,Uitableview,Swift3,我想将单元格作为参数传递给函数datePickerChanged(发送方:UIDatePicker) 下面是代码的一部分,我想在这里实现这一点,有人能告诉我如何实现这一点吗 class DailyTimesTVC: UITableViewController { override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

我想将单元格作为参数传递给函数
datePickerChanged(发送方: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
    }

}

我建议使用回调闭包

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
}
  • DailyTimesTableViewCell
    中创建一个
    回调
    变量,该变量传递
    UIDatePicker
    实例

    var callback : ((UIDatePicker) -> ())?
    
  • DailyTimesTableViewCell
    中,将观察者添加到
    awakeFromNib

    datePicker.addTarget(self, action: #selector(datePickerChanged), for: .valueChanged)
    
  • DailyTimesTableViewCell
    中添加调用回调的操作方法

    func datePickerChanged(sender: UIDatePicker) {
       callback?(sender)
    }
    
  • DailyTimesTVC
    In
    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的表格视图中直接创建多个单元格。

根据您在第二点中要求添加观察者的回答,我们如何在
DailyTimesTableViewCell
中使用
viewDidLoad
,因为该类是
UITableViewCell
的子类,并且
UITableViewCell
没有
viewDidLoad
@vadian,非常有效,谢谢!!