【问题标题】:UISplitViewController - Multiple Detail View Controllers via storyboard seguesUISplitViewController - 通过故事板 segues 的多个细节视图控制器
【发布时间】:2014-01-27 20:32:24
【问题描述】:

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

我在这个网站上看到了一个解决方案,如何通过故事板 segues 做到这一点。

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

这是我找到的解决方案的link

【问题讨论】:

标签: objective-c ipad storyboard uisplitviewcontroller segue


【解决方案1】:

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

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

编辑:在 Xcode 6 中,“替换”转场由“显示细节”转场方便地处理,该转场专门用于拆分视图控制器上的这种类型的视图处理。我建议在新项目中专门使用这种方法。 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;

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

【讨论】:

  • 示例代码不适用于紧凑宽度设备:github.com/dstarsboy/TMMultiDetailSplitView/issues/2 有点违背了使用拆分视图控制器的目的。
  • 这个问题被标记为 iPad only,这个问题是专门关于 iPad 的,当你打开示例代码时,应用程序不是通用的,它被锁定为 iPad 应用程序......紧凑型设备什么都没有与任何询问或回答的事情有关。不过,我只是更新了代码以在手机上也能使用,希望对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
相关资源
最近更新 更多