'CustomTableCell' 类型的值没有成员委托

Value of type 'CustomTableCell' has no member delegate

我有一个名为 CustomTableCell 的 UITableViewCell 子类,它在 swift 4.1 中声明。文件。

在我的带有 UITableView 的视图控制器中,我在 cellForRowAt:

let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier") as! CustomTableCell
cell.delegate = self

我收到以下错误:

Value of type 'CustomTableCell' has no member delegate.

我在顶部声明了 UITableViewDelegate。

UITableViewDelegate 不需要 cell.delegate = self.

如果您的 CustomTableCell 有您的 Custom Delegate 那么您只需要分配它。因此,如果您的 CustomTableCell 没有蚂蚁 Custom Delegate,请删除该行。

对于 tableView 委托方法,您必须在 viewDidLoad() 中添加:

yourTableView.delegate = self
yourTableView.dataSource = self

或仅使用 StoryBorad 连接。

答案:如何在 CustomTableCell class 中创建单元格委托?只是好奇

CustomTableCell.swift :

// Custom protocol 
protocol CustomCellDelegate: NSObjectProtocol {
   // Protocol method
   func someFunctionToPassSomeValue(name: String)
}
class CustomTableCell: UITableVieCell {
   weak var delegate: CustomCellDelegate?

  // Your class implementations and outlets..

  //Call your protocol method in some action, for example in button action
  @IBAction func buttonAction(sender: UIButton) {
    delegate?.someFunctionToPassSomeValue(name: "anyStringValue")
  } 
}

然后在 ViewController class 您需要将实例分配给自定义委托变量。

let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier") as! CustomTableCell
cell.delegate = self

并实现协议方法:

extension ViewController: CustomCellDelegate {
   func someFunctionToPassSomeValue(name: String) {
      print("Delegate is working. Value : \(name)")
   }
}