ios - 如何将数据从uitableviewcontroller发送到uitableviewcell

标签 ios swift uitableview uicollectionview delegates

我有以下情况

TableViewController (ExploreViewController) 具有自定义单元格 - CategoryTableViewCell。每个单元格都有一个带有 UICollectionViewCells 的 Collection View 。

我希望 CategoryTableViewCell 在显示 Collection View 单元格时联系 ExploreViewController 以确定需要显示哪些数据。数据取决于 TableView 单元格的索引路径行和 Collection View 单元格的索引。

如何使用委托(delegate)来完成此任务?

最佳答案

我不会那样做。我会将每个单元格所需的数据作为 TableView Controller 的 cellForRow(at:) 方法中的模型对象传递给它。如果单元格的数据发生变化,则向其传递一个新的模型对象。然后,单元格可以使用该模型数据来响应来自其子 Collection View 的数据源调用。

如果您决定使用委托(delegate)模式或类似的模式:

我们将其称为数据源而不是委托(delegate)。设计 CategoryTableViewCellDataSource 协议(protocol)。创建 CategoryTableViewCell 时,将 TableView Controller 设置为其数据源。

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

关于ios - 如何将数据从uitableviewcontroller发送到uitableviewcell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58034207/

相关文章:

ios - UITableView 编辑模式下的页眉和页脚缩进

ios - 如何在主从 ios 应用程序中保存详细 View 的状态?

ios - 在 NSOperationQueue 和 AFNetworking 中等待操作结束时显示 ActivityView

ios - 如何增加 iPhone 应用程序安装的最低 iOS 版本?

swift - 实现另一个协议(protocol)的协议(protocol)变量

swift - 快速分割任意对象

ios - cellForRowAtIndexPath 在源获取数据之前执行

php - AFNetworking 代码块未被执行

ios - 带有 iAd 横幅的 UITableView 出现奇怪的溢出

iphone - 将 subview 添加到不滚动的 tableview