使用UITableView深入分层数据

Jua*_*res 9 objective-c uitableview data-structures uistoryboard

我想构建一个应用程序来导航数据层次结构.此层次结构的结构类似于我在下图中显示的结构.结构的一个分支可以比其他分支更多.

在此输入图像描述

我想用TableViews向下钻取这个结构,如下所示:

    A > AA > AAB > AABA
Run Code Online (Sandbox Code Playgroud)

要么

    A > AB > ABA
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果我的故事板中只有一个TableViewController并重复使用它来显示每个新的数据级别?我不想tableviewcontrollers在我的故事板中连接一堆,因为我不确定我是否会有3,4或100级的层次结构.

dan*_*anh 7

要仅使用故事板中绘制的单个VC来递归到任意深度,请使用故事板绘制顶层:导航控制器,其根部具有表视图控制器.表vc应该是UITableView子类,并且在storyboard中具有故事板标识符(例如,"MyCustomTableVC").

为MyCustomTableVC提供一个公共属性(比如,ModelItem*节点),指示模型中应该显示哪个节点.

而不是故事板segues,当表vc得到时didSelectRowAtIndexPath,让它创建自己的另一个实例...

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                         bundle: nil];
// Imagine it's called MyCustomTableVC
MyCustomTableVC *newVC = (MyCustomTableVC*)[mainStoryboard 
                    instantiateViewControllerWithIdentifier: @"MyCustomTableVC"];
Run Code Online (Sandbox Code Playgroud)

将newVC模型节点设置为所选项目(indexPath.row中模型中的项目),然后推送到它...

// making up a lot of stuff about your model here, but hopefully you get the idea...
newVC.node = [self.model objectAtIndex:indexPath.row];
[self.navigationController pushViewController:newVC animated:YES];
Run Code Online (Sandbox Code Playgroud)

这种方法具有获得所有导航控制器行为的好处:动画推送和弹出,后退按钮等.