gpt4 book ai didi

ios - UICollectionViewCell 中的 UITableView 的正确 MVC 设计是什么?

转载 作者:行者123 更新时间:2023-11-29 02:31:35 26 4
gpt4 key购买 nike

如标题所述,我在每个 Collection View 单元格中都有一个表格 View 。对我来说,superview 的 Controller 应该控制 View 是有道理的,但由于在这种情况下每个 tableview 包含不同的数据,我让每个 superview( Collection View 单元)成为其 tableview 的 Controller 。我希望这是有道理的。我知道使 View 也成为 Controller 违反了 MVC 范例,但我不确定在这种情况下实现 MVC 合规性的正确方法是什么。我还需要根据 CollectionViewController 中发生的情况向 TableView 发送消息。我是否需要子类化 UITableViewController 并在我的 collectionviewcell.h 文件中引用它?

抱歉,如果这让您感到困惑。感谢您的帮助。

最佳答案

我认为您的直觉是正确的,将 View 对象用作数据源违反了 MVC。我建议让拥有的 View Controller 充当所有 TableView 的数据源,或者为每个 TableView 设置一个单独的模型对象,为该 TableView 提供单元格。

如果您使用单个数据源,则必须有一个 switch 语句来确定哪个 TableView 正在询问并用适当的数据填充单元格。

我的直觉是创建一个瘦 TableView 数据源类,它的唯一工作是在集合单元格内为 TableView 提供单元格(并响应其他 Collection View 数据源协议(protocol)方法)。使用具有指向数据源对象的强大属性的 UICollectionViewCell 的自定义子类。您可以让您的自定义单元格类在初始化时创建一个空数据源对象,并将其连接到 TableView 。

然后在您的 cellForItemAtIndexPath 方法中,将适当的数据传递给单元格的数据源对象。如果您重复使用一个单元格,它已经有一个数据源对象,所以您只需用新数据替换数据并触发 reloadData 方法。

您的 Controller 对象将像它应该的那样在模型和 View 之间进行调解。它将为每个单元格设置模型数据,然后每个单元格的数据源对象将充当该单元格 TableView 的模型。

如果您稍后想出几种显示不同数据的不同类型的集合单元格,则为每个单元格使用单独的数据源对象将使代码保持简单。您只需根据单元格类型对数据源对象进行子类化。

关于ios - UICollectionViewCell 中的 UITableView 的正确 MVC 设计是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26792127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com