在故事板中的视图控制器之外的UIView

时间:2012-07-08 19:46:54

标签: ios xcode cocoa-touch storyboard

我遇到了一个问题,我无法在官方文档,Stackoverflow或Google上找到答案。

我是一位经验丰富的iOS开发人员,但却是故事板的新手。我想在当前的viewcontroller上实例化一个视图,一个视图,在NIB中,我会在viewController之外绘制并附加一个插座以在代码中引用它并调用类似addSubview:或类似的东西。绘制叠加层是有用的,或者在我目前的情况下,绘制一个用于MapView委托的标注视图。但我无法弄清楚如何在故事板中做到这一点。

我似乎看不到视图控制器之外的视图,视图控制器内部的视图必须是控制器视图的子视图,或者根本不在Interface Builder中可见(拖动时可以在传统的NIB中,在外部组成的视图,但如果你需要调整它的最不详细的话,这是一个很大的问题)。

有关做什么或在哪里看的任何提示?谢谢。

3 个答案:

答案 0 :(得分:30)

似乎无法做到这一点。请参阅Jason's commentthis question解决同一问题,但在不同的背景下。

然而,我在考虑我的问题的影响时早些时候意识到 - 正如我在my previous comment中开始解释之后才决定值得一个完整的答案 - 将自定义视图的设计与应用程序流程的设计。因此,在Storyboard中设计自定义视图是不可能的,这很可能是......设计。

自定义视图(可重用组件)与视图控制器(代表应用程序故事板中的场景)非常不同。它与电影中的角色和场景相同。即使您恰好在一个场景中使用该角色,也不希望在场景中设计角色。如果你只在一个场景中使用它,这是偶然的,但不是必需的。所以它必须是分开的。

您希望使用Interface Builder设计自定义视图的事实只是an implementation detail,应该封装在您的类中。应用程序故事板无需了解甚至更少管理您如何处理可重用视图的特定实现。

嗯,我希望我有更多这个品牌的讯问:)

答案 1 :(得分:26)

您可以使用容器视图,就像常规视图(您可以分配IBOutlet UIView),但您可以在UIViewController之外定义它。

The "container view" is outside the view, but i can assign it to a IBOutlet UIView You can design it

答案 2 :(得分:2)

我自己想知道同样的事情,实际上能够让这件事发生,虽然在搞乱之后,它已经消失了。我有一个导航控制器,一个视图控制器和两个视图。我在一个单独的笔尖中开发了视图,并将它们导入到这个项目中。当我连接按钮时,我正在工作的视图突然出现在我的View Controller旁边。不幸的是,在试图让其他观点出现时,我不知何故失去了它,并且不知道如何取回它。您似乎无法将视图拖动到故事板,只能拖动到视图控制器中。但是,如果我能够做到一次,它必须是可重现的。