2017-02-04 56 views
1

我有TableView的ViewController。在這個TableView的每個單元格中都有幾個按鈕(所以我不能使用didSelectRow)。從TableViewCell中的操作訪問ViewController

當按下按鈕時,我需要從操作獲取父ViewController。所以我將這個功能添加到我的自定義單元格類中:

@IBAction func editBtnPressed (_ sender: Any) { 

} 

我需要自己添加一些子視圖。 如何訪問根視圖控制器爲self

+0

如果你指的** **自我的按鈕功能,它指的是什麼類? UITableView?還是UITableViewCell? –

+0

我需要引用具有TableView的UIViewController,它具有包含此操作按鈕的Cell – moonvader

回答

2

我想你應該通過在單元類中創建控制器的屬性並在cellForRowAtIndexPath方法中創建單元格後分配屬性值來實現。

例如:

細胞類

weak var yourController : YourViewController? 

cellForRowAtIndexPath

cell.yourController = self 

那麼您可以在editBtnPressed行動訪問YourViewController

但我建議你通過編程方式在你的控制器類中創建按鈕動作。這是一個好方法。

例如:

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 

} 
相關問題