UISplitViewController - 通过故事板segues的多个细节视图控制器

时间:2014-01-27 20:32:24

标签: objective-c ipad storyboard uisplitviewcontroller segue

我正在尝试为iPad做一个项目,我想在其中使用分割视图控制器。我将为主视图控制器中的每个单元格提供不同的详细视图控制器。

我看到了一个解决方案,如何通过本网站的故事板segue来做到这一点。

他基本上将他的每个UITableViewCell链接到不同的细节视图控制器。但我想知道这是一种“稳定”还是“好”的方式。我的意思是,它是否比编程更好或更稳定?如果有的话,做他的方法有什么后果?

以下是我找到的解决方案的link

1 个答案:

答案 0 :(得分:4)

这是一个棘手的问题,即使它是一个非常常见的用例。

1)一个想法是将一个空的根视图控制器作为您的细节,并使用“替换”segue处理管理下的segue以快速切换到您真正关心的详细视图。这应该“技术上”修复左上角的“后退”按钮,仍然允许你弹出root并且不显示空控制器。虽然没有测试过这些,所以我不确定。

编辑:在Xcode 6中,“替换”segue可以通过“show detail”segue方便地处理,该segue专门用于拆分视图控制器上的这种类型的视图处理。我建议在新项目中专门使用此方法。 See sample code.

2)另一个想法是在故事板中安装单独的导航控制器(一个连接,其余全部搁浅)。每个细节视图类型一个,并点击主菜单只需将详细视图的导航控制器交换到您关注的那个。

AppDelegate中与此类似的代码:

self.detailNavigationController = [self.masterNavigationController.storyboard instantiateViewControllerWithIdentifier:@"MyChosenNavigationControllerStoryboardId"];
self.splitViewController.viewControllers = @[self.splitViewController.viewControllers[0], self.detailNavigationController];
self.splitViewController.delegate = (id)self.detailNavigationController.topViewController;

第二种方式的缺点是,在内存测试中,似乎没有交换新的导航控制器释放旧导航控制器正在使用的所有内存。所以最好用于简单的应用程序,但不能用于任何疯狂的复杂程序。