2017-02-04 7 views
1

У меня есть ViewController с TableView. В каждой ячейке этого TableView есть несколько кнопок (поэтому я не могу использовать didSelectRow).Access ViewController от действия в TableViewCell

Мне нужно получить родительский элемент управления ViewController при нажатии кнопок. Поэтому я добавить эту функцию в моей пользовательский класс клеток:

@IBAction func editBtnPressed (_ sender: Any) { 

} 

мне нужно получить для себя, чтобы добавить некоторые подвидов к нему. Как я могу получить доступ к корневому ViewController как self?

+0

, если вы обратитесь к ** ** самостоятельно в кнопке функция, к какому классу это относится? UITableView? Или UITableViewCell? –

+0

Мне нужно обратиться к UIViewController, у которого есть TableView, у которого есть ячейка с кнопкой с этим действием – moonvader

ответ

2

Я думаю, вы должны сделать это, создав свойство своего контроллера в классе ячеек и присвоив значение свойства, когда после создания ячейки в методе 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 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^