故事板和自定义容器视图控制器

时间:2012-04-05 14:58:43

标签: xcode4.2 uistoryboard uicontainerview

我正在根据apple spec创建自定义容器视图。我想使用故事板连接三个静态子UIViewControllers。是否有一个简单的方法在故事板中通过Relationship进行连接,如故事板中的UINavigationController所示?

NavigationController 'relationship'

根据我的研究,似乎这是不可能的。

4 个答案:

答案 0 :(得分:5)

IS 可以将容器视图控制器链接到子级。事实上,这样做很容易。您打开Object库,在搜索字段中键入“Container”,然后查找对象“Container view”。它看起来像这样:

enter image description here

将容器视图拖到视图控制器的内容视图中。

然后您可以控制 - 从容器视图拖动到您希望容器视图托管的其他视图控制器。 IB为您设置了“嵌入式”。加载父视图控制器的内容视图时,将调用embed segue。 embed segue设置父/子视图控制器关系并执行您需要的内务处理。它简单而轻松。

为每个嵌入segue调用prepareForSegue方法。您可以像嵌入其他segue一样为嵌入segue指定唯一标识符,然后使用prepareForSegue中的segue ID为子视图控制器进行额外设置。

在github上查看这个项目,该项目展示了如何使用embed segue在父级中使用容器视图和嵌入segue包含2个静态UITableViewControllers。该项目为父级和子级VC设置自定义协议,以便相互通信。在prepareForSegue方法中,父节点指向两个子VC的指针,并且还将自己设置为两个子VC的委托,以便子节点可以与父节点进行通信。

您可以在此链接中找到该项目: 的 https://github.com/DuncanMC/test

答案 1 :(得分:1)

您可以使用容器视图。 Container View会自动创建与新视图控制器的关系。

答案 2 :(得分:0)

您是否尝试过子类化UITabbarcontroller或UINavigationController?

您可以创建从其中一个扩展的自定义类,然后将其设置在故事板中 - 从而允许您创建相同的关系。然后你可以隐藏标签栏并添加你想要的任何功能。

enter image description here

答案 3 :(得分:-1)

我没有这样做,但这是一个有趣的问题。在尝试在故事板中关联它们之前,您是否在容器控制器中定义了子视图控制器(您可能正在这样做 - 没有显示代码)?从文档来看,这听起来就像你需要做的那样 - 它可能与通用类不同,你可以将它们拖入。

  

为了让iOS正确地将事件路由到子视图控制器以及这些控制器管理的视图,容器视图控制器必须在将子视图层次结构添加到视图层次结构之前将子视图控制器与其自身关联。

无论如何 - 猜猜......