首页 > 解决方案 > UITableViewCell 的委托不起作用

问题描述

我有一个UITableViewCell包含按钮的自定义。ViewController单击按钮时,应在其中执行某些操作(在这种情况下删除单元格)UITableView

我尝试使用delegate.

在我的自定义单元格中,我有

protocol CellDeleterDelegate: class {

    func deleteIngredAt(index:IndexPath)
    func deleteReceiptAt(index:Int)
    func reloadData()

}

weak var delegate: CellDeleterDelegate?

else {
            print("before Delete")
            delegate?.deleteIngredAt(index: indexP)
            print("after Delete")
            delegate?.reloadData()
            print(indexP)
        }

调用所需的函数(在 else 之前,我从作为表的数据源的数组中删除数据)

在我的ViewController我有以下代码:

class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, CellDeleterDelegate{

[...]

func deleteIngredAt(index: IndexPath) {
        print("reached DeleteIngred")

        UIView.setAnimationsEnabled(true)
        self.tableView.deleteRows(at: [index], with: .automatic)

    }

    func deleteReceiptAt(index:Int) {

        print("reached DeleteIngred")

        let indices: IndexSet = [index]
        UIView.setAnimationsEnabled(true)
        tableView.deleteSections(indices, with:  UITableView.RowAnimation.fade)

    }

    func reloadData() {
        print("reload reached")
        tableView.reloadData()
    }

但是我的任何函数都没有ViewController被调用,我不知道为什么。我早些时候在另一个项目中使用过它,它工作得很好。

标签: iosswiftxcodeuitableviewdelegates

解决方案


我想你忘记打电话给 cell.delegate = self in

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}

推荐阅读