Ячейка во многих разных ViewControllers
У меня есть ячейка, которую я использую в разных виртуальных каналах, потому что мое приложение разделено на разные категории, но все используют одну и ту же ячейку.
Теперь у меня есть кнопка, которая должна вызвать событие, чтобы поделиться им через другие приложения, такие как whastapp или facebook. Проблема в том, что в зависимости от того, в какой категории вы находитесь, у вас есть другой контроллер представления, который будет отображать функцию. Я могу заставить его работать с одним, но не с 10 различными vc в одной ячейке.
Я использовал расширение, чтобы получить parentviewController
extension UIView {
var parentViewController: HomeViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if parentResponder is UIViewController {
return parentResponder as! HomeViewController!
}
}
return nil
}
Это, очевидно, будет работать только в Home vc.
Как я могу обойти эту проблему?
1 ответ
Вы можете использовать протокол для обработки вашего действия кнопки в контроллере вида:
protocol ShareEventDelegate: class {
func didShareButtonSelected()
}
В вашей пользовательской ячейке:
class CustomCell: UITableViewCell {
weak var shareDelegate: ShareEventDelegate?
func yourButtonAction() {
shareDelegate.didShareButtonSelected?()
}
}
Затем приведите ваши ViewControllers в соответствие с ShareEventDelegate, например:
extension HomeViewController: ShareEventDelegate {
func didShareButtonSelected() {
// handle your action here
}
}
И в cellForRow:
cell.shareDelegate = self