代表们不工作?

时间:2017-07-11 05:55:44

标签: swift delegates protocols

这是我的协议定义。

protocol ActivityIndicatorDelegate: class {
    func showIndicator()
    func hideIndicator()
    func barcodeError()
    func categoryError()
    func descError()
    func reasonError()
    func costError()
}

然后在我的自定义单元格类中,我创建弱引用,并调用委托函数

class ProductTableViewCell: UITableViewCell {
   weak var indicatorDelegate: ActivityIndicatorDelegate?
   @IBAction func stockUpdate(_ sender: Any) {
        indicatorDelegate?.categoryError()
   }
}

然后在我的UITableViewController类

class ProductTableViewController: 

    UITableViewController,ActivityIndicatorDelegate{

    override func viewDidLoad() {
            super.viewDidLoad()
            let cellDelegate = ProductTableViewCell()
            cellDelegate.indicatorDelegate = self
    }
func categoryError() {
                //self.showAlert(alertTitle: "Error!", alertMessage: "Category Should not be empty")
                print("Error")
            }
        }

我已将所有这些内容写在一个文件中。我在这里做错了什么?有人可以帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您不应在viewDidLoad中设置委托。这只会设置您刚刚创建的单元格的委托,而不是表格视图中的所有单元格。

您应该在celForRowAtIndexPath

中执行此操作
let cell = tableView.dequeue...
// configure the cell...
cell.indicatorDelegate = self