Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何创建树型UITableView结构?_Ios_Objective C_Tree_Nsmutablearray_Nsdictionary - Fatal编程技术网

Ios 如何创建树型UITableView结构?

Ios 如何创建树型UITableView结构?,ios,objective-c,tree,nsmutablearray,nsdictionary,Ios,Objective C,Tree,Nsmutablearray,Nsdictionary,我有一个NSMutableArray的NSDictionary,如下所示 <Blank BlankName="V6" Type="Line" CurrentType="Crypt"/> <Blank BlankName="T3" Type="Ion" CurrentType="Crypt"/> <Blank BlankName="HU" Type="Sia" CurrentType="Crypt"/> <Blank BlankName="HF" Type

我有一个NSMutableArray的NSDictionary,如下所示

<Blank BlankName="V6" Type="Line" CurrentType="Crypt"/>
<Blank BlankName="T3" Type="Ion" CurrentType="Crypt"/>
<Blank BlankName="HU" Type="Sia" CurrentType="Crypt"/>
<Blank BlankName="HF" Type="Ion" CurrentType="Crypt"/>
<Blank BlankName="HU5" Type="Sia" CurrentType="Crypt"/>
<Blank BlankName="HU6" Type="Sia" CurrentType="Less"/>
<Blank BlankName="V6" Type="Line" CurrentType="Less"/>
<Blank BlankName="V66" Type="Line" CurrentType="Less"/>
因此,以我这里的xml为例,UITableView看起来是这样的

Crypt
 - Ion
  - T3
  - HF
 - Line
  - V6
 - Sia
  - HU
  - HU5
Less
 - Line
  - V6
  - V66
 - Sia
  - HU6
我没有任何我一直在研究的示例代码,因为我真的不知道从哪里开始,例如,是否有适合存储此类信息的特定结构。我没有研究过分类,因为我不知道如何存储它


问了这个问题后,我仍在阅读和调查。

最终,在
UITableView
中表示项目的最简单方法(我认为)是使用平面数组(如果有多个部分,则使用平面数组)

您需要做的是根据您所在的树的级别增加缩进级别,但是您还需要正确的顺序

有这样一个对象可能会有所帮助:

@interface MyObject 

@property NSInteger level;

@property id object;

@end
[ <Dictionary containing Header 1 title, indentation 0>,
  (Dictionary containing Sub-Header 1 title, indentation 1),
  -Dictionary containing Sub-Header-info 1 title, indentation 2-,
  -Dictionary containing Sub-Header-info 1 title, indentation 2-,
  .....
  (Dictionary containing Sub-Header 2 title, indentation 1),
  .....
  <Dictionary containing Header 2 title, indentation 0>,
  .....
  and so on.
]
现在,遍历XML。将此对象的
level
属性设置为对象在XML中的正确深度,并将
object
作为指向原始对象的指针

在执行此操作时,将所有这些对象放入一个数组中,并确保顺序正确

构建完数组后,现在只需将其与表视图的数据源一起使用即可

对于
numberOfRows
,返回数组的计数


创建表视图单元格时,将缩进级别设置为容器对象中设置的
级别
属性。

要创建平面数组,请更改解析代码以创建如下数组:

@interface MyObject 

@property NSInteger level;

@property id object;

@end
[ <Dictionary containing Header 1 title, indentation 0>,
  (Dictionary containing Sub-Header 1 title, indentation 1),
  -Dictionary containing Sub-Header-info 1 title, indentation 2-,
  -Dictionary containing Sub-Header-info 1 title, indentation 2-,
  .....
  (Dictionary containing Sub-Header 2 title, indentation 1),
  .....
  <Dictionary containing Header 2 title, indentation 0>,
  .....
  and so on.
]
[,,
(包含子标题1、缩进1的词典),
-包含子标题信息1标题的词典,缩进2-,
-包含子标题信息1标题的词典,缩进2-,
.....
(包含副标题2、缩进1的词典),
.....
,
.....
等等
]
您可以创建自己的自定义对象类来保存缩进、标题和其他内容的值,而不是字典。将更易于使用:)
干杯:)

只需谷歌的可折叠表结构“.你会找到很多的。但一定要记住理解它们背后的逻辑和实现。简单的复制没有乐趣:)太棒了,我会看看的。是的,我喜欢学习,我从来没有看到过解决方案,所以不知道从哪里开始。还有一件事是我不想让它变得容易,我只想知道如何创建我所追求的结构。。标题、子标题、信息。。希望这能帮我解决这个问题。我确实有一个解决办法。但给你太简单了:D:P..使用字典来维护页眉+副标题+。。对于键,单击一个单元格,只需通过从子标题数组中获取数据,在单元格数据源数组中插入新对象,并重新加载带有新插入单元格缩进的表:D..沿以下几行的内容;)我在上面编辑了我的答案,听起来很酷,谢谢你提供的信息。。但我更感兴趣的是理解如何将标题、子标题和信息独立地排序到一个平面数组中,然后在tableview中使用。。无论如何,我都会研究折叠表结构,因为其中可能有一些信息或帮助。再次感谢您的回复。。我明白你的意思,但我脑子里的问题是在对三个不同层次进行排序时出现的。标题、子标题和信息都需要独立排序。。。我不知道如何在平面数组中实现这一点。除了
级别
对象
,您还可以添加对
父级
的引用。具有相同
父对象的每个对象必须位于
父对象
和下一个
级别
的对象之间。。我有点玩弄这个主意。。。然而,有一件事我搞不清楚,那就是按字母顺序排序。如果可能的话,你知道吗?谢谢你的回答…在客户端按字母顺序排序会很棘手,因为我假设你想分别对标题、子标题和信息项进行排序。如果你在服务器端对你正在维护的数据库进行排序会更好。是的,这正是我所希望的。。。如果我做不到,我就照原样做。。谢谢你的帮助。