我有以下情况

TableViewController(ExploreViewController)具有自定义单元格-CategoryTableViewCell。每个单元格都有一个带有UICollectionViewCells的集合视图。

我希望CategoryTableViewViewCell在显示集合视图单元格时联系ExploreViewController,以确定它需要显示哪些数据。数据取决于表视图单元格的索引路径行和集合视图单元格的索引。

如何使用委托完成此任务?

最佳答案

我不会那样做。我会将每个单元格需要的数据作为模型对象传递给表视图控制器的cellForRow(at:)方法。如果单元格的数据发生更改,请向其传递一个新的模型对象。然后,单元可以使用该模型数据从其子集合视图响应数据源调用。

如果确定要使用委托模式或类似的模式:

我们称其为数据源而不是委托。设计一个CategoryTableViewCellDataSource协议。创建CategoryTableViewCell时,将表视图控制器设置为其数据源。

让单元格询问它的数据源以显示数据。委托协议将使用单元格的位置找出其索引路径,然后从模型中获取数据并返回。 (您将找到单元格内容视图的中点,将点转换为表格视图的坐标系,然后使用表格视图的indexPathForRow(at:)方法找出索引路径。

10-04 21:04
查看更多