将 XIB 加载到另一个 XIB 的视图中

Posted

技术标签:

【中文标题】将 XIB 加载到另一个 XIB 的视图中【英文标题】:Load XIB into View of another XIB 【发布时间】:2014-11-13 17:42:32 【问题描述】:

我有一个 XIB 文件,其中有一个空白的 CustomUserView(带有基类 CustomUserView 的 UIView)和一个 UIButton。这有一个控制器,MyMainController。在主控制器方法中,我有代码:

//Set up user info view
        customUserView  = (NSBundle.mainBundle().loadNibNamed("CustomUserViewXIB", owner:nil, options:nil) as NSArray)[0] as CustomUserView

我已经在 viewDidLoad 和 viewWillAppear 方法中尝试过这段代码。现在 CustomUserViewXIB 中有一些我想出现的字段。但是,我只得到那个空白的 CustomUserView 和按钮。有没有办法做我想做的事,还是必须将 CustomUserView 添加为子视图?

【问题讨论】:

【参考方案1】:

如果您要加载另一个 CustomUserView 并对其进行配置,当然您必须将其添加为子视图。否则,它只是您的代码中的一些东西。未将视图作为子视图添加到实际位于界面中的某些视图中的视图,则不在界面中。

【讨论】:

所以没有办法从包中加载一个 nib 并将其设置为父 nib 中的预先存在的视图,然后从包加载的 nib 中重新绘制? @steventnorris 这样的一种方式。你在寻找什么它不提供?您是否希望在这里使用视图控制器?然后使用嵌入式容器视图控制器。但是你需要告诉我你认为哪里不对,这样我才能帮助你。您打算执行的操作 - 加载 nib、提取***视图并将其填充到界面中 - 完全合法且非常强大。 我只是想消除多余的视图。在这种情况下,我必须在父 XIB 中有一个 UIView 作为容器视图,向其中添加约束,然后向容器视图添加一个子视图。或者我可以在控制器中以编程方式添加约束和子视图。我想在父 XIB 中有视图,然后只需将 XIB 加载到该视图中。避免一些额外的步骤。 我在故事中没有看到任何“额外的观点”。我只看到一个。您实例化并使用它。每个实例都必须来自某个地方。此实例来自加载笔尖。从笔尖加载就像制作任何其他视图一样。有什么问题? 当然,我假设这个视图被保存在不同的笔尖中是有原因的。就像在应用程序的过程中您可能需要不止一份副本?如果您只需要一个副本,那为什么要在单独的笔尖中。只需将其作为视图控制器视图的一部分放在主故事板/xib 中即可。换句话说,您可以拥有来自 XIB 的视图并插入来自另一个 XIB 的视图,但您也可以只拥有一个 XIB 开始的所有内容。这取决于你。

以上是关于将 XIB 加载到另一个 XIB 的视图中的主要内容,如果未能解决你的问题,请参考以下文章

在另一个 XIB 中指定类时如何使用 Custom View.xib 加载自定义视图?

如何将视图 XIB 作为子视图加载到视图控制器 XIB 中

如何将 xib 加载到一个视图控制器中的两个容器视图中

将附加视图插入从 Xib 加载的 UICollectionView

将视图从 XIB 加载到 ViewController 和 VIewCell

将单独的 xib 视图控制器加载到情节提要导航中[重复]