我尝试为IO应用程序创建n维树视图控件。 我使用带有UIScrollView的UiViewController,并为TreeNodes提供了一个自定义的UIView类。 现在我想折叠并展开Treenodes,但如果我在滚动视图中添加或删除子视图,我必须重新排列其他子视图。
这是树:
如果我折叠第二个节点并删除子节点,它看起来像是:
有没有办法实现类似的东西,而无需以编程方式重新排列以下子视图?
答案 0 :(得分:1)
你已经意识到很多代码? 因为我可能会使用tableview。
作为表的数据源,您可以使用字典数组;在每个字典中,您可以存储行信息,如:
行元素; //要显示的当前元素
父元素; // *到父元素
代; // NSInteger父母的数量(你可以用它来做缩进)
因此,当您删除行时,可以在所有数据源中搜索具有该父元素的项目,并将其替换为已删除行的父项(如果存在);而不是递减他们的一代,并递归所有的孩子(直到你不会再找到孩子)。
当然,在填充tableview时,您可以轻松使用世代号进行缩进。