如何在切换容器视图控制器的故事板?

时间:2012-03-09 11:18:23

标签: cocoa-touch ios5 storyboard

有没有办法让故事板上的自定义容器视图控制器的行为与UITabBarController非常相似?

我的容器视图控制器类似于UITabBarController

  • 它会切换屏幕内容
  • 响应用户操作某个小部件

但它与UITabBarController的不同之处在于:

  • 它仅切换部分屏幕(由屏幕上的矩形框架实现)
  • 启动切换的用户操作涉及特定的UIControl,而不是屏幕底部的标签栏。

除此之外,我非常想以一个非常类似的方式登录我的应用程序UITabBarController是故事板的:

  • 一个场景代表容器视图,其中包含所有未切换的内容
  • 尽可能多的儿童场景,因为我可以为框架提供可切换的内容。
  • 从每个切换控件到其对应的子场景的一个segue。

但是,我无法实现这一目标。有没有办法(比人工使我的切换容器视图控制器成为UITabBarController的子类更好)?

1 个答案:

答案 0 :(得分:1)

据我所知,这是故事板没有应有的用处之一。

根据我的看法,您可以手动插入所有切换诱导小部件,将它们连接到各自的目标视图控制器,并将生成的segue配置为您的自定义UIStoryboardSegue子类的实例覆盖perform并在您的容器视图控制器中可选地实现prepareForSegue:sender: ...但是(a)您可能已经想到了这一点而且(b)对我来说,这几乎听起来不像你的样子首先瞄准。

由于这个原因和其他原因,我会(并且已经这样做了......)在这种情况下完全避免故事板 - 而是 - 将NIB与IBOutletCollection结合使用(不支持)在故事板中 - 你无法连接任何东西!)视图控制器。

在我的情况下,我可以使用连接的视图控制器的UISegmentedControl的标题/图像属性动态填充UITableViewtabBarItem行的片段。

然而,这是权衡,因为您失去配置IB中视图控制器之间转换的能力。此外,它依赖于隐含的合同,视图控制器具有正确配置的tabBarItem ,无法在IB中表达

在我的情况下,这没关系,但你的里程可能会有很大差异!

将容器的布局和使用拆分为单独的NIB有助于简化操作。