我正在制作一个树,它有一个根节点和无限个层次。
我想实现的是:
- 使用tableview显示当前关卡的节点,从根节点开始。每个表单元格是一个节点。(我可以硬编码它来显示特定关卡的节点)
- 当点击表格单元格时,在tableview中显示该节点的下一级子节点。
- 这种情况一直持续下去,直到您单击一个没有任何子节点为止。然后什么也不做。
我知道点击一个cell可以触发performSegueWithIdentifier,它会转到下一个场景。但是,由于树有无限的关卡,我想仅仅去另一个场景是行不通的。相反,必须有一种方法来重复当前场景(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方法中,如果没有孩子然后什么都不做。