iOS中的表视图的数据层次结构

时间:2015-06-08 14:10:11

标签: ios uitableview

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

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

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

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

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

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

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

因为webservice就这样发送给我..

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

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

1 个答案:

答案 0 :(得分:1)

<强> 1。嵌套列表:

在您的视图控制器中,保留一个&#34;所选对象的列表&#34; (它会表现为堆栈)。选择单元格时,将相应的文件夹/ document / ...对象添加到selectedObjects列表/堆栈。如果您返回,请删除最后一个元素。在显示表视图的对象时,请获取列表/堆栈中的最后一个条目,您知道&#34;您所在的位置&#34;。

示例用例跟随您的示例:

  1. selectedObjects为空
  2. 点按&#34;文件夹1&#34;在表视图中
  3. 添加&#34;文件夹1&#34;到selectedObjects
  4. 的末尾
  5. 显示&#34;文件夹1和#34;的子元素是文件夹X,文件夹Y,文档1,文档2
  6. 点按&#34;文件夹X&#34;在表视图中
  7. 添加&#34;文件夹X&#34;到selectedObjects的末尾(列表现在有两个条目&#34;文件夹1&#34;和&#34;文件夹X&#34;)
  8. 显示&#34;文件夹X&#34;的子元素是文件夹a,文件夹b
  9. 点击&#34;返回&#34;在表视图中
  10. selectedObjects删除最后一个条目,现在只包含&#34;文件夹1&#34;
  11. selectedObjects获取最后一个条目,现在是&#34;文件夹1&#34;
  12. 您有要显示子列表的文件夹
  13. <强> 2。不同的课程:

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

    会有代码&#34;决定&#34;要使用哪个CellData子类,具体取决于webservice中的类。这些决定也可以放在渲染中(决定使用哪个UITableViewCell?)或者在用户输入处理中(已经点击了哪个单元格 - &gt;对象列表中的哪个类?)。所以你也可以使用NSObject的列表,并且不必为webservices类维护镜像类层次结构。