从TableViewCell中的操作访问ViewController

时间:2017-02-04 17:44:55

标签: ios swift uitableview tableviewcell

我有TableView的ViewController。在TableView的每个单元格中都有几个按钮(所以我不能使用didSelectRow)。

按下按钮时,我需要从操作中获取父ViewController。所以我将此函数添加到我的自定义单元类:

@IBAction func editBtnPressed (_ sender: Any) {

}

我需要自己去为它添加一些子视图。 如何以自我

的形式访问根ViewController

1 个答案:

答案 0 :(得分:3)

我想您应该通过在单元类中创建控制器的属性并在cellForRowAtIndexPath方法中创建单元格后分配属性值来实现。

例如:

单元格中的

weak var yourController : YourViewController?
cellForRowAtIndexPath

中的

cell.yourController = self

然后您可以访问YourViewController操作中的editBtnPressed

但我建议您通过在控制器类中以编程方式创建按钮操作来完成。这是一个很好的方法。

例如:

class YourCellClass: UITableViewCell {
  @IBOulet var myBtn: UIbutton!
  ...
}

Yourcontroller类

cellForRowAtIndexPath

中的

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! YourCellClass

    cell.myButton.addTarget(self, action: #selector(self. editBtnPressed), for: .touchUpInside)

并在editBtnPressed

func editBtnPressed (_ sender: Any) {
 // you can access controller here by using self

}