从TableViewCell中的操作访问ViewController

moo*_*der 2 uitableview tableviewcell ios swift

我有带ViewView的ViewController。在此TableView的每个单元格中,都有几个按钮(因此我不能使用didSelectRow)。

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

@IBAction func editBtnPressed (_ sender: Any) {

}
Run Code Online (Sandbox Code Playgroud)

我需要自我介绍才能为其添加一些子视图。我怎样才能以自己的身份访问根ViewController ?

Sah*_*hil 5

我想您应该通过在cell类中创建控制器的属性并在cellForRowAtIndexPath方法中创建单元后分配属性值来做到这一点。

例如:

在单元班

weak var yourController : YourViewController?
Run Code Online (Sandbox Code Playgroud)

cellForRowAtIndexPath

cell.yourController = self
Run Code Online (Sandbox Code Playgroud)

那么你就可以访问YourViewControllereditBtnPressed动作。

但是我建议您通过在控制器类中以编程方式创建按钮动作来进行操作。那是好方法。

例如:

class YourCellClass: UITableViewCell {
  @IBOulet var myBtn: UIbutton!
  ...
}
Run Code Online (Sandbox Code Playgroud)

控制器类

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)
Run Code Online (Sandbox Code Playgroud)

和在 editBtnPressed

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

}
Run Code Online (Sandbox Code Playgroud)