UINib (iOS):可以从一个 nib 文件中实例化多个视图吗?

Posted

技术标签:

【中文标题】UINib (iOS):可以从一个 nib 文件中实例化多个视图吗?【英文标题】:UINib (iOS): possible to instantiate more than one view from a nib file? 【发布时间】:2018-01-15 09:28:55 【问题描述】:

我注意到UINib:instantiate(withOwner:options:) 返回一个数组。这是否意味着一个 nib 文件可以包含多个视图?在我看到的每个示例中,只有一个视图,它是数组中的第一个对象。数组中其他(可能的)元素是什么?

我问这个问题是因为我想了解整个机制是如何工作的,而不是因为我想以这种方式工作,所以欢迎任何理论背景信息。

谢谢!

编辑:如果我可以在一个 nib 文件中有多个视图,如何将第二个视图连接到 UIView 子类?只有一个File's Owner

【问题讨论】:

Resource Programming Guide 有一些有用的信息。 已经读过了。找不到我的问题的答案,而且语言远非简单。 【参考方案1】:

是的,您可以在 nib 文件中拥有多个视图。例如。

具有两个根视图的Test.nib

加载它

if let views = Bundle.main.loadNibNamed("Test", owner: nil) 
     print(views)

views 将是两个数组。数组的第一个元素是UIView,第二个元素是UITableViewCell

【讨论】:

那么,如果我想将它们连接到 UIView 的子类怎么办?那可能吗?只有一个文件的所有者 您可以在Identity Inspector 中为两个视图设置自定义类。

以上是关于UINib (iOS):可以从一个 nib 文件中实例化多个视图吗?的主要内容,如果未能解决你的问题,请参考以下文章

在我告诉他启动之前,不应启动 UINib 文件

如何在 ios 中使用 UI NIB 而不是 loadNibNamed 来自定义 UI 表格视图单元格?

Swift 惰性变量和 didReceiveMemoryWarning

UITableViewCell 的 Nib 文件中视图的大小

Objective-C - 给定一个 UINib 实例,我如何初始化我的自定义 UIView?

无法在捆绑包中加载 Nib