0

我有一个单元格,我在许多不同的 vc 中使用,因为我的应用程序分为不同的类别,但都使用相同的单元格。

现在我有一个按钮,它应该触发事件以通过 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。

我该如何解决这个问题?

4

1 回答 1

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
于 2018-02-25T23:41:11.670 回答