要在 storyboard 中仅绘制一个 VC 递归到任意深度,请使用 storyboard 绘制顶层:一个导航控制器,其根部有一个表视图控制器。表 vc 应该是 UITableView 子类,并且在情节提要中具有情节提要标识符(例如“MyCustomTableVC”)。
给 MyCustomTableVC 一个公共属性(例如,ModelItem *node),它指示它应该在模型中显示哪个节点。
当表 vc 获取时,而不是故事板 segues,didSelectRowAtIndexPath
让它创建另一个自身的实例......
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle: nil];
// Imagine it's called MyCustomTableVC
MyCustomTableVC *newVC = (MyCustomTableVC*)[mainStoryboard
instantiateViewControllerWithIdentifier: @"MyCustomTableVC"];
将 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];
这种方法具有获得所有导航控制器行为的好处:动画推送和弹出、后退按钮等。