【问题标题】:how to send data from uitableviewcontroller to uitableviewcell如何将数据从 uitableviewcontroller 发送到 uitableviewcell
【发布时间】:2019-09-20 19:32:08
【问题描述】:
我有以下情况
TableViewController (ExploreViewController) 具有自定义单元格 - CategoryTableViewCell。每个单元格都有一个带有 UICollectionViewCells 的集合视图。
我希望 CategoryTableViewCell 在显示集合视图单元格时联系 ExploreViewController 以确定它需要显示哪些数据。数据取决于表格视图单元格的索引路径行和集合视图单元格的索引。
如何使用委托来完成此任务?
【问题讨论】:
标签:
ios
swift
uitableview
uicollectionview
delegates
【解决方案1】:
我不会那样做。我会将每个单元格需要的数据作为表视图控制器的cellForRow(at:) 方法中的模型对象传递给它。如果单元格的数据发生变化,则向其传递一个新的模型对象。然后单元格可以使用该模型数据来响应来自其子集合视图的数据源调用。
如果你决定使用委托模式,或者类似的东西:
我们称它为数据源而不是委托。设计一个 CategoryTableViewCellDataSource 协议。创建 CategoryTableViewCell 时,将表视图控制器设置为其数据源。
让单元格询问它的数据源以显示数据。委托协议将使用单元格的位置来确定它的索引路径,然后从模型中获取数据并返回它。 (你会找到单元格内容视图的中点,将该点转换为表格视图的坐标系,然后使用表格视图的indexPathForRow(at:) 方法找出索引路径。