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

时间:2017-07-10 13:09:31

标签: uitableview swift3

我想将一个单元作为参数传递给函数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
    }

}

1 个答案:

答案 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的表视图中创建多个单元格。