未调用委托方法

时间:2017-07-20 20:15:26

标签: swift delegates

伙计我在视图控制器中调用委托方法时遇到问题。我遵循了几个教程,但我无法使其正常工作。你能指出我做错了什么吗?感谢

查看:

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)
    }
}

1 个答案:

答案 0 :(得分:0)

您不应该创建像var cell = TableViewCell()这样的单元格,您应该做的是在cellForRowAt中将单元格出列,然后设置委托,即cell.delegate = self