File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2323
2424- (instancetype ) initWithValue : (id )value ;
2525- (void ) addChild : (TreeNode *)newChild ;
26+ - (void ) removeTreeNode : (TreeNode *)treeNode ;
2627- (NSArray <TreeNode *> *) visibleNodes ;
2728@end
Original file line number Diff line number Diff line change @@ -44,6 +44,28 @@ - (void) addChild:(TreeNode *)newChild {
4444 [_children addObject: newChild];
4545}
4646
47+ - (void ) removeTreeNode : (TreeNode *)treeNode {
48+ [self _internalRemove: treeNode];
49+ }
50+
51+ - (BOOL ) _internalRemove : (TreeNode *)node {
52+ BOOL result = NO ;
53+ for (TreeNode *child in _children) {
54+ if (node == child) {
55+ [_children removeObject: node];
56+ result = YES ;
57+ break ;
58+ }
59+ if (child.isFolder ) {
60+ result = [child _internalRemove: node];
61+ if (result) {
62+ break ;
63+ }
64+ }
65+ }
66+ return result;
67+ }
68+
4769- (NSUInteger ) levelDepth {
4870 NSUInteger cnt = 0 ;
4971 if (_parent != nil ) {
Original file line number Diff line number Diff line change 1717- (NSInteger ) numberOfRowsInTreeView : (UITreeView *)treeView ;
1818- (TreeNode *) treeView : (UITreeView *)treeView treeNodeForRow : (NSInteger )row ;
1919- (NSInteger ) treeView : (UITreeView *)treeView rowForTreeNode : (TreeNode *)treeNode ;
20+ - (void ) treeView : (UITreeView *)treeView removeTreeNode : (TreeNode *)treeNode ;
2021
2122// @optional
2223- (void ) treeView : (UITreeView *)treeView didSelectForTreeNode : (TreeNode *)treeNode ;
Original file line number Diff line number Diff line change @@ -86,9 +86,17 @@ - (BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *
8686}
8787
8888- (void ) tableView : (UITableView *)tableView commitEditingStyle : (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath : (NSIndexPath *)indexPath {
89+ TreeNode *treeNode = [self treeNodeForIndexPath: indexPath];
8990 if (editingStyle == UITableViewCellEditingStyleDelete) {
90- // Delete the row from the data source
91- [tableView deleteRowsAtIndexPaths: @[indexPath] withRowAnimation: UITableViewRowAnimationFade];
91+ if ([_treeViewDelegate respondsToSelector: @selector (treeView:removeTreeNode: )]) {
92+ [_treeViewDelegate treeView: self removeTreeNode: treeNode];
93+ }
94+ if (treeNode.isFolder && treeNode.expanded && treeNode.hasChildren ) {
95+ [self reloadData ];
96+ [self resetSelection ];
97+ } else {
98+ [tableView deleteRowsAtIndexPaths: @[indexPath] withRowAnimation: UITableViewRowAnimationFade];
99+ }
92100 } else if (editingStyle == UITableViewCellEditingStyleInsert) {
93101 // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
94102 }
Original file line number Diff line number Diff line change @@ -31,6 +31,10 @@ - (NSInteger) treeView:(UITreeView *)treeView rowForTreeNode:(TreeNode *)treeNod
3131 return [[_rootTreeNode visibleNodes ] indexOfObject: treeNode];
3232}
3333
34+ - (void ) treeView : (UITreeView *)treeView removeTreeNode : (TreeNode *)treeNode {
35+ [_rootTreeNode removeTreeNode: treeNode];
36+ }
37+
3438- (void ) treeView : (UITreeView *)treeView didSelectForTreeNode : (TreeNode *)treeNode {
3539 NSLog (@" Node %@ selected" , treeNode.title );
3640}
You can’t perform that action at this time.
0 commit comments