从UITableViewCell委托不起作用

时间:2019-04-12 12:09:54

标签: ios swift xcode uitableview delegates

我有一个自定义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)
        }

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

在我的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中的所有函数都没有被调用,我也不知道为什么。 我以前在另一个项目中使用过,效果很好。

1 个答案:

答案 0 :(得分:0)

我认为您忘了打电话给cell.delegate = self

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