Objective c 如何通过编辑创建嵌套的UITableView 球门
用于嵌套UITableView,实现行的添加和重新排序 我现在在哪里 结合使用前面的代码,我可以在行之间移动,但我还没有弄清楚如何正确地插入和删除行 计划 初始数据结构如下所示:Objective c 如何通过编辑创建嵌套的UITableView 球门,objective-c,uitableview,tree,nested,collapse,Objective C,Uitableview,Tree,Nested,Collapse,用于嵌套UITableView,实现行的添加和重新排序 我现在在哪里 结合使用前面的代码,我可以在行之间移动,但我还没有弄清楚如何正确地插入和删除行 计划 初始数据结构如下所示: treeNode = [[MyTreeNode alloc] initWithValue:@"Root"]; MyTreeNode *node1 = [[MyTreeNode alloc] initWithValue:@"Node1"]; [treeNode addChild:node1];
treeNode = [[MyTreeNode alloc] initWithValue:@"Root"];
MyTreeNode *node1 = [[MyTreeNode alloc] initWithValue:@"Node1"];
[treeNode addChild:node1];
MyTreeNode *node1a = [[MyTreeNode alloc] initWithValue:@"Node1a"];
MyTreeNode *node1b = [[MyTreeNode alloc] initWithValue:@"Node1b"];
[node1 addChild:node1a];
[node1 addChild:node1b];
MyTreeNode *node1a1 = [[MyTreeNode alloc] initWithValue:@"Node1a1"];
[node1a addChild:node1a1];
MyTreeNode *node1b1 = [[MyTreeNode alloc] initWithValue:@"Node1b1"];
MyTreeNode *node1b2 = [[MyTreeNode alloc] initWithValue:@"Node1b2"];
MyTreeNode *node1b3 = [[MyTreeNode alloc] initWithValue:@"Node1b3"];
[node1b addChild:node1b1];
[node1b addChild:node1b2];
[node1b addChild:node1b3];
node1b.inclusive = NO;
MyTreeNode *node2 = [[MyTreeNode alloc] initWithValue:@"Node2"];
[treeNode addChild:node2];
MyTreeNode *node2a = [[MyTreeNode alloc] initWithValue:@"Node2a"];
[node2 addChild:node2a];
MyTreeNode *node2a1 = [[MyTreeNode alloc] initWithValue:@"Node2a1"];
[node2a addChild:node2a1];
在我看来,对行进行重新排序的过程如下:
treeNode = [[MyTreeNode alloc] initWithValue:@"Root"];
MyTreeNode *node1 = [[MyTreeNode alloc] initWithValue:@"Node1"];
[treeNode addChild:node1];
MyTreeNode *node1a = [[MyTreeNode alloc] initWithValue:@"Node1a"];
MyTreeNode *node1b = [[MyTreeNode alloc] initWithValue:@"Node1b"];
[node1 addChild:node1a];
[node1 addChild:node1b];
MyTreeNode *node1a1 = [[MyTreeNode alloc] initWithValue:@"Node1a1"];
[node1a addChild:node1a1];
MyTreeNode *node1b1 = [[MyTreeNode alloc] initWithValue:@"Node1b1"];
MyTreeNode *node1b2 = [[MyTreeNode alloc] initWithValue:@"Node1b2"];
MyTreeNode *node1b3 = [[MyTreeNode alloc] initWithValue:@"Node1b3"];
[node1b addChild:node1b1];
[node1b addChild:node1b2];
[node1b addChild:node1b3];
node1b.inclusive = NO;
MyTreeNode *node2 = [[MyTreeNode alloc] initWithValue:@"Node2"];
[treeNode addChild:node2];
MyTreeNode *node2a = [[MyTreeNode alloc] initWithValue:@"Node2a"];
[node2 addChild:node2a];
MyTreeNode *node2a1 = [[MyTreeNode alloc] initWithValue:@"Node2a1"];
[node2a addChild:node2a1];
使用fromIndexPath为移动的行创建MyTreeNode的新实例。
使用toIndexPath为上面要插入移动行的行创建MyTreeNode的新实例。
使用某种addObject:object-toParent:parent类型的方法将上述两个实例相互添加。
对于仅仅添加行,我认为过程应该相当类似
问题
上面的计划是解决问题的正确方法吗?如果是,使addObject:object成为parent:parent方法的正确方法是什么?
重新排序时,如何防止较高级别的节插入较低级别的节?例如:不允许在子标题下插入标题。
任何帮助都将不胜感激