伙计我在视图控制器中调用委托方法时遇到问题。我遵循了几个教程,但我无法使其正常工作。你能指出我做错了什么吗?感谢
查看:
protocol TableViewCellDelegate: class {
func showNutrients(cell: TableViewCell)
}
class TableViewCell: UITableViewCell {
@IBOutlet weak var nutrientsButton: UIButton!
@IBOutlet weak var editButton: UIButton!
@IBOutlet weak var removeButton: UIButton!
@IBOutlet weak var mealLabel: UILabel!
weak var delegate: TableViewCellDelegate?
@IBAction func showNutrients(_ sender: Any) {
delegate?.showNutrients(cell: self)
}
}
查看控制器:
class NutritionViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, TableViewCellDelegate {
@IBOutlet weak var tableView: UITableView!
var cell = TableViewCell()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
cell.delegate = self
}
...
func showNutrients(cell: TableViewCell) {
let indexPath = self.tableView.indexPath(for: cell)
self.meals[indexPath!.row].nutrientsShown.negate()
self.tableView.reloadRows(at: [indexPath!], with: .none)
}
}
答案 0 :(得分:0)
您不应该创建像var cell = TableViewCell()
这样的单元格,您应该做的是在cellForRowAt
中将单元格出列,然后设置委托,即cell.delegate = self
。