不要在didSelectRowAt中运行委托方法

时间:2017-06-16 02:09:38

标签: ios swift uitableview

HogeViewController.swift

protocol HogeDelegate: class {
  func huga()
}
class HogeViewController: UIViewController,UITableViewDelegate, UITableViewDataSource{
  weak var delegate:
  func tableView(didSelectRowAt){
    self.delegate?.huga()
  }
}

HogeTableViewCell.swift

class HogeTableViewCell: UITableViewCell, HogeDelegate{
  func huga(){
    print("huga")
  }
}

不要运行此代码...

这写不可能吗?

2 个答案:

答案 0 :(得分:2)

v不是func tableView(didSelectRowAt)方法的签名,所以不,它永远不会被调用。您的功能签名需要

UITableViewDelegate

更好的是,不要让您的课程扩展func tableView(_ tableView: UITableView, didSelectRowAt rowIndex: Int)并实施UIViewController数据源和委托,只需让您的课程扩展UITableView已经实现数据源和委托,因此将强制您使用UITableViewController修饰符,如

override

答案 1 :(得分:0)

由于单元格是可变的,因此它似乎是一个无法通过委托实现方法的规范。