36

我遇到了一个在官方文档、Stackoverflow 或 Google 上找不到答案的问题。

我是一位经验丰富的 iOS 开发人员,但对 Storyboards 不熟悉。我想在当前视图控制器上实例化一个视图,在 NIB 中,我将在视图控制器外部绘制视图并附加一个插座以在代码中引用它并调用类似 addSubview: 的东西。绘制叠加层或在我目前的情况下绘制用于 MapView 委托的标注视图很有用。但我不知道如何在情节提要中做到这一点。

我似乎在视图控制器之外没有视图,并且视图控制器内的视图要么必须是控制器视图的子视图,要么在 Interface Builder 中根本不可见(当您拖动外部组成的视图时这没关系,在传统的 NIB 中,但如果您需要调整它的最细微的细节,这将是一个很大的问题)。

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

4

3 回答 3

30

似乎没有办法做到这一点。请参阅Jason 的评论和解决相同问题的这个问题,尽管在不同的上下文中。

然而,在考虑我的问题的含义时,我早些时候意识到——正如我在之前的评论中开始解释的那样,在决定是否值得一个完整的答案之前——将自定义视图的设计与应用程序的设计分开是有意义的流动。因此,无法在 Storyboards 中设计自定义视图这一事实很可能是……设计使然。

自定义视图(它是一个可重用的组件)与视图控制器(代表应用程序故事板中的场景)非常不同。这就像电影中的角色和场景一样。你不想在你的场景中设计你的角色,即使你碰巧只在一个场景中使用了那个角色。如果你只在一个场景中使用它是偶然的,但不是必需的。所以必须分开。

您想使用 Interface Builder 来设计自定义视图这一事实只是应该封装在您的类中的实现细节。应用程序故事板不需要知道,甚至不需要管理,您如何处理可重用视图的特定实现。

嗯,我希望我能有更多这样的审讯:)

于 2012-07-08T23:05:33.567 回答
26

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

这 你可以设计它

于 2014-02-21T22:04:15.437 回答
2

我自己也在想同样的事情,实际上能够做到这一点,尽管在搞砸之后,它就消失了。我有一个导航控制器、一个视图控制器和两个视图。我在一个单独的 nib 中开发了视图,并将它们导入到这个项目中。在连接按钮时,我正在使用的视图突然出现在我的视图控制器旁边。不幸的是,在试图让另一个视图出现时,我不知何故丢失了它,不知道如何找回它。似乎您不能将视图拖到情节提要中,只能拖到视图控制器中。但是,如果我能够做到一次,它必须是可复制的。

于 2012-11-20T13:49:35.650 回答