我有一个自定义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
中的所有函数都没有被调用,我也不知道为什么。
我以前在另一个项目中使用过,效果很好。
答案 0 :(得分:0)
我认为您忘了打电话给cell.delegate = self
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}