Как я могу вызвать segue из класса uitableviewcell? Не контроллер - PullRequest
0 голосов
/ 06 апреля 2019

Не контроллер.Я хочу вызвать segue из класса customcell.swift

Также метод подготовить для segue не показывает

1 Ответ

1 голос
/ 06 апреля 2019

Это происходит потому, что вы больше не интересуетесь контроллером представления и у вас нет доступа к методам стека навигации ...

Отличный способ решить эту проблему, вы можете просто использовать шаблон делегатаиспользуя протокол.

Таким образом, вы можете создать протокол с действием, как показано ниже:

protocol CustomCellDelegate {
   func didTapAnyButton(_ anyParam: String)
}

В UITableViewCell вы просто создаете это свойство делегата:

weak var delegate: CustomCellDelegate?

Ps: я создал со слабым, чтобы избежать утечек памяти, и необязательным, потому что свойство будет инициализировано со значением nil, и viewController установит значение этого свойства после того, как оно уже было создано.

Итак, в вашем ViewController вы можете просто реализовать этот протокол:

extension ViewController: CustomCellDelegate {
   func didTapAnyButton(_ anyParam: String) {
       performSegue()
   }
}

По крайней мере, вы должны просто назначить делегат ViewController при создании экземпляра CustomCell, учитывая, что у вас есть UITableViewCell с именем CustomCell:

let cell = tableView.dequeReusableCellWithIdentifier(“CustomCel”) as! CustomCell

cell.delegate = self

После этого вы можете просто вызвать метод делегата tapAnyButton для действия, которое вам нужно реализовать, напримерe:

delegate.didTapAnyButton(“Some Param that I need to pass on segue method.”)

Поэтому, когда вы вызываете этот метод, ViewController, который назначил этот протокол делегата, будет запущен!А в ViewController у вас есть доступ к методу segue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...