Swift: 使用 tableview 创建无限树
Swift: create an infinite tree using tableview
我正在制作一棵树,它有一个根节点和无限层级。
我要实现的是:
- 使用table视图显示当前级别的节点,从根节点开始。每个 table 单元格是一个节点。 (我能够对其进行硬编码以显示特定级别的节点。)
- 点击 table 单元格时,在 table 视图中显示节点的下一级子节点。
- 这种情况一直持续下去,直到您单击一个没有任何子节点的节点。然后什么都不做。
我知道点击一个单元格可以触发 performSegueWithIdentifier,它会转到下一个场景。但是,由于这棵树有无限的层次,我想仅仅去另一个场景是行不通的。相反,必须有一种方法来重复当前场景(table视图以显示当前级别节点)以及有关它是哪个级别的信息。
请告知处理这种情况的最佳方法。谢谢。
示例树结构在这里:(
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 方法中检查它是否有子节点,如果没有子节点则什么都不做。
我就是这样做的...
我正在制作一棵树,它有一个根节点和无限层级。
我要实现的是:
- 使用table视图显示当前级别的节点,从根节点开始。每个 table 单元格是一个节点。 (我能够对其进行硬编码以显示特定级别的节点。)
- 点击 table 单元格时,在 table 视图中显示节点的下一级子节点。
- 这种情况一直持续下去,直到您单击一个没有任何子节点的节点。然后什么都不做。
我知道点击一个单元格可以触发 performSegueWithIdentifier,它会转到下一个场景。但是,由于这棵树有无限的层次,我想仅仅去另一个场景是行不通的。相反,必须有一种方法来重复当前场景(table视图以显示当前级别节点)以及有关它是哪个级别的信息。
请告知处理这种情况的最佳方法。谢谢。
示例树结构在这里:(
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 方法中检查它是否有子节点,如果没有子节点则什么都不做。
我就是这样做的...