如何告诉 UIView 关于 collectionviewcell 中的事件?

How to tell an UIView about an event in a collectionviewcell?

Reference Image

您好!

我正在使用 MVC 模式制作一个 Swift 项目,我希望你们能帮助我了解如何在不同 class 之间最好地传递信息。

我会尽力描述,但请看一下我画得不好的参考,以便更加清楚。

该项目是使用模型构建的,这是一个简单的 class 项目规则,视图控制器具有视图和模型的实例,在它们之间传递信息并启动视图。

View拥有所有的元素变量,并设置布局。该视图有一个 CollectionViewController,而 CollectionViewController 又具有 CollectionViewCells。其中一个单元格有一个按钮。当然还有其他一些 classes,但它们不相关。

我想要完成的是我希望用户单击 CollectionViewCell 中的按钮。然后 CollectionViewCell 应该告诉视图按钮被按下,视图应该获取一些信息并发送到 ViewController,后者将为模型解释它。

或多或少 Button > User Clicks -> (CollectionViewController) -> View > View 收集信息 -> CollectionView -> Model。

我无法将 buttonclick 事件委托给视图,因为无法委托给 UIView。我可以使用 Closure 将 buttonclick 事件发送到 CollectionViewController,但我似乎无法从那里进一步发送它。

所以我正在考虑的两个备选方案是创建一个 NotificationCenter 只是为了告诉 View 一个按钮已被按下,或者也使 View 成为 ViewController。两者似乎都不理想。有没有人有更好的解决方案,或者对我在这里应该做什么有任何见解?

基于您的参考图像的一个解决方案可以是: 您可以将带有 clouser 的点击事件发送到您的 collectionView 父视图,并且在您的视图中有一个弱的父实例 viewController。当 clouser 调用时,您可以从您的父实例调用该方法并更新您的模型