是否可以在 nib 中使用视图控制器?还是只是 UIViews?

Posted

技术标签:

【中文标题】是否可以在 nib 中使用视图控制器?还是只是 UIViews?【英文标题】:Is it possible to have view controllers in nibs? Or is it just UIViews? 【发布时间】:2014-02-12 02:17:47 【问题描述】:

这似乎是一个非常愚蠢的问题,但是当我创建一个 nib 文件并将 UIViewController 放入其中时,我无法向其中添加任何内容。但是如果我做一个 UIView 就可以了。如果我创建一个 UIViewController 并选择“使用 nib”,它会创建一个包含 UIView 的 nib,而不是 UIViewController。

这与允许您将 UIViewControllers 和 UIViews 分开的故事板不同。笔尖不是这样吗?

【问题讨论】:

UIViewController 用于实例化和拥有 NIB 内部的对象。除非它是一个子视图控制器,否则拥有一个内部的是没有意义的。 【参考方案1】:

笔尖中可以有任何对象。从字面上看,您的应用程序中可以存在的任何对象都可以在 nib 中。

但是,当您进行基于 nib(而不是基于故事板)的设计时,您通常不会将视图控制器放在 nib 中。通常的方法是在代码中创建视图控制器,通常使用initWithNibName:bundle: 方法。 nib 将使用视图控制器配置为“文件的所有者”,这是对 nib 中不包含的外部对象的引用。 nib 包含视图控制器使用的视图,连接到 VC 的 view 出口。

【讨论】:

以上是关于是否可以在 nib 中使用视图控制器?还是只是 UIViews?的主要内容,如果未能解决你的问题,请参考以下文章

为 StoryBoard 中 ViewController 中使用的 UIView 加载 Nib

目标 C:使用代码实现导航控制器时如何在 NIB 中添加工具栏

使用 nib 中的视图重新加载 UIView 属性

是否可以使用Storyboard创建非全屏UITableView?

在单个视图控制器中使用多个 nib 文件?

如何在不使用视图控制器的情况下使用 nib 文件加载视图