gpt4 book ai didi

ios - iOS 中 TableView 的数据层次结构

转载 作者:行者123 更新时间:2023-11-29 01:57:14 26 4
gpt4 key购买 nike

我可能有很多嵌套列表..例如

我有一个列表并包含一些文件夹,当用户点击它时,我会在同一个表格 View 中显示文件夹的内容..并且这个内容可能也有一些文件夹,当用户点击它时,它也会显示相同的内容 TableView 。

但是不同类型的tableview的列表是可以不同的。例如,第一个文件夹的列表是 X 类的列表,但第二个可以是 Y 类..

我做了一些事情,但在某些情况下无法正常工作。所以我不知道如何解决这种嵌套列表。

作为方案,文件夹1->(文件夹X,文件夹Y,文档1,文档2)如果用户点击文件夹 X

文件夹X -> (文件夹a,文件夹b)

但此列表(文件夹 X、文件夹 Y、文档 1、文档 2)是 X 的类,如列表此列表(文件夹 a,文件夹 b)是 Y 类,如 List

因为 webservice 像那样发送给我..

我知道这很复杂,但我希望它很清楚。

我正在使用 Xamarin.ios,但对于 objective-c 无关紧要。我只是寻求可能的解决方案。像一个通用列表?

最佳答案

<强>1。嵌套列表:

在您的 View Controller 中保留“选定对象”的列表(它将表现为堆栈)。当您选择一个单元格时,将相应的文件夹/文档/...对象添加到 selectedObjects 列表/堆栈。如果返回,请删除最后一个元素。当为 TableView 显示对象时,获取列表/堆栈中的最后一个条目,您就知道“您在哪里”。

按照您的示例的示例用例:

  1. selectedObjects 为空
  2. 在表格 View 中点击“文件夹 1”
  3. 将“文件夹 1”添加到 selectedObjects 的末尾
  4. 显示“文件夹 1”的子元素为文件夹 X、文件夹 Y、文档 1、文档 2
  5. 在表格 View 中点击“文件夹 X”
  6. 将“文件夹 X”添加到 selectedObjects 的末尾(列表现在有两个条目“文件夹 1”和“文件夹 X”)
  7. 显示“文件夹X”的子元素为文件夹a、文件夹b
  8. 在表格 View 中点击“返回”
  9. selectedObjects 中删除最后一个条目,现在它仅包含“文件夹 1”
  10. selectedObjects 获取最后一个条目,现在是“文件夹 1”
  11. 您有要显示子列表的文件夹

<强>2。不同的类:

如果没有其他方法,您可以创建一个基类 - 例如 - CellData。然后,对于您从网络服务获得的每个不同类,创建一个子类 - 比如说 - FolderCellDataDocumentCellData。每个子类都包含对从 Web 服务获取的实际实例的引用。然后,您可以使用 CellData 列表来保存对类 X 和 Y 的引用。

将有一些代码根据 Web 服务中的类“决定”使用哪个 CellData 子类。这些决定也可以放在渲染中(决定使用哪个 UITableViewCell?)或用户输入处理(哪个单元格已被点击 -> 它在对象列表中属于哪个类?) .因此,您也可以使用 NSObject 的列表,这样您就不必为 web 服务类维护镜像类层次结构。

关于ios - iOS 中 TableView 的数据层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30711417/

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