许多不同视图控制器中的单元格
Posted
技术标签:
【中文标题】许多不同视图控制器中的单元格【英文标题】:Cell in many different ViewControllers 【发布时间】:2018-02-25 22:35:02 【问题描述】:我有一个单元格,我在许多不同的 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。
我该如何解决这个问题?
【问题讨论】:
你应该从你的 UIViewController 控制你的 UIViews,而不是相反。这是一个非常糟糕的 hack,你真的不应该使用它。 请告诉我如何 我必须了解您的架构才能提供帮助,抱歉 我可以在 cellForRow 分配它吗? cell.parentVc = HomeviewController()。 ? 您的单元格应该有一个单一的职责,即在屏幕上显示其信息。它不应该知道它的父级。 【参考方案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
【讨论】:
首先谢谢,我现在通过发布通知让它工作了:)以上是关于许多不同视图控制器中的单元格的主要内容,如果未能解决你的问题,请参考以下文章