objective-c - UISplitViewController - 通过 Storyboard segues 的多个详细 View Controller

标签 objective-c ipad storyboard uisplitviewcontroller segue

我正在尝试为 iPad 做一个项目,我想在其中使用 Split View Controller 。我将为主视图 Controller 中的每个单元格设置不同的细节 View Controller 。

我在这个网站上看到了一个解决方案,如何通过 Storyboard转场来做到这一点。

他基本上将每个 UITableViewCell 链接到不同的详细 View Controller 。但我想知道这样做是“稳定”还是“好”的方式。我的意思是,它是否比以编程方式更好或更稳定?如果有的话,按照他的方法会有什么后果?

这是 link我找到的解决方案

最佳答案

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

1) 一个想法是有一个空的 Root View Controller 作为您的细节,它处理在引擎盖下管理 segues 以快速 segue 到您真正关心的细节 View ,利用“替换”segue。这应该“技术上”修复了左上角的“后退”按钮,并且仍然允许您弹出到 root 而不是让它显示空 Controller 。不过还没有测试过这些,所以我不确定。

编辑:在 Xcode 6 中,“替换”转场由“显示详细信息”转场方便地处理,该转场专门用于 Split View Controller 上的此类 View 处理。我建议只在新项目中使用这种方法。 See sample code.

2) 另一个想法是在你的 Storyboard中有单独的导航 Controller (一个连接,其余的都搁浅)。每种详细 View 类型一个,然后点击主菜单,只需将详细 View 的导航 Controller 交换到您关心的那个。

AppDelegate 中的类似代码:

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

第二种方法的缺点是,在内存测试中,更换新的导航 Controller 似乎不会释放旧导航 Controller 使用的所有内存。因此,它适合用于简单的应用程序,但不适用于任何疯狂复杂的应用程序。

关于objective-c - UISplitViewController - 通过 Storyboard segues 的多个详细 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21391073/

相关文章:

iphone - UIImagePickerController图像,显示到另一个类

iphone - 从 UIPageViewController 卸载 viewController

objective-c - iOS 6 无法自动旋转

ios - iPad,在 viewForHeaderInSection 中调整自定义按钮的大小

iphone - iOS 媒体框架

iphone - 如何了解ios sdk中的网络详细信息和使用

iphone - 确定 segue 是否为 unwind segue?

iphone - 如何访问类中的ABRecordRef值?

ios - 未找到 UIViewController 上的 Xamarin.iOS/MonoTouch Storyboard Segue

iphone - 在 TableView 中组合静态和原型(prototype)内容