[英]Delegate from UITableViewCell doesn't work
我有一個包含按鈕的自定義UITableViewCell
。 單擊按鈕后,應在UITableView
所在的ViewController
中執行某些操作(在這種情況下,刪除單元格)。
我嘗試使用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
中的任何函數都沒有被調用,我也不知道為什么。 我之前在另一個項目中使用過它,並且效果很好。
我想你忘了打電話給cell.delegate = self
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.