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
Ios Swift:使用tableview创建无限树_Ios_Swift_Tree_Tableview - Fatal编程技术网

Ios Swift:使用tableview创建无限树

Ios Swift:使用tableview创建无限树,ios,swift,tree,tableview,Ios,Swift,Tree,Tableview,我正在做一棵树,它有一个根节点和无限级 我想要实现的是: 使用表视图显示当前级别的节点,从根节点开始。每个表单元都是一个节点。我能够硬编码它来显示特定级别的节点。 点击表格单元格时,在表格视图中显示节点的下一级子节点。 这会一直持续下去,直到您单击一个没有任何子节点的节点。然后它什么也不做。 我知道点击一个单元格可以触发performsguewithidentifier,它将进入下一个场景。但是,由于树有无限的层次,我想仅仅去另一个场景是行不通的。相反,必须有一种方法来重复当前场景tablevi

我正在做一棵树,它有一个根节点和无限级

我想要实现的是:

使用表视图显示当前级别的节点,从根节点开始。每个表单元都是一个节点。我能够硬编码它来显示特定级别的节点。 点击表格单元格时,在表格视图中显示节点的下一级子节点。 这会一直持续下去,直到您单击一个没有任何子节点的节点。然后它什么也不做。 我知道点击一个单元格可以触发performsguewithidentifier,它将进入下一个场景。但是,由于树有无限的层次,我想仅仅去另一个场景是行不通的。相反,必须有一种方法来重复当前场景tableview,以显示当前级别节点,其中包含有关当前级别的信息

请建议处理这种情况的最佳方法。多谢各位

示例树结构如下所示:

class Node {
  var id:Int;
  var parent:Int?;
  init(id:Int, parent:Int?) {
    self.id = id;
    self.parent = parent;
  }
}

var allNodes = [
  Node(id:1, parent: nil),
  Node(id:2, parent: 1),
  Node(id:3, parent: 1),
  Node(id:4, parent: 2),
  Node(id:5, parent: 2),
  Node(id:6, parent: 3)
];

您可以简单地将数据源allNodes更新为tableViewDelegate方法中的子节点:tableView:didSelectRowAtIndexPath:然后从tableView中删除其他行并调用tableView.reloadData,这意味着您的行现在将只是先前所选单元格的子节点,并继续运行,直到点击在didSelectRow方法中,留下您可以检查它是否有子对象的位置,如果它没有子对象,则不执行任何操作


这就是我要做的…

我敢肯定,在任何当前或未来的计算机上,你都无法表示无限级别。