为啥“loadNibNamed”方法返回数组?

Posted

技术标签:

【中文标题】为啥“loadNibNamed”方法返回数组?【英文标题】:Why "loadNibNamed" methods return array?为什么“loadNibNamed”方法返回数组? 【发布时间】:2016-03-22 07:45:03 【问题描述】:

当我们使用loadNibNamed方法获取nib文件时,为什么会返回一个数组,不是一个nib文件名对应一个nib文件吗?我尝试打印这个数组的计数,我发现它总是返回1。希望你能帮我解释一下,非常感谢!这是代码的sn-p:

 NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"TestView" owner:self options:nil];
 NSLog(@"array's count is %ld",array.count);

【问题讨论】:

您是否也测试过包含多个视图的 xib 文件?这就是此方法返回数组的原因。一个 xib 可以包含多个视图。 哦,我明白了,谢谢。我将 ViewController 拖到 xib 文件中,发现它返回 2。:) 【参考方案1】:

这是因为 NIB/xib 文件也可以包含多个视图表示。因此,您可以在数组中访问所有包含的视图。

【讨论】:

【参考方案2】:

xib 返回数组的原因是".XIB" 可以包含多个视图。优点是您不必为一个视图创建一个 xib 文件。您只需将多个视图放入一个 XIB 并从数组中访问它

示例 .xib --> 数组[view1, view2, view3, view4]

你可以从图片中看到

【讨论】:

【参考方案3】:

感谢讨论here:

这是 ProjectBuilder/PBX/Interface Builder 早期遗留下来的遗留设计。我强烈不推荐这种方法,只使用单独的 xib 文件。我没有看到任何好处。

但是,如果决定仍然这样做,您可以拥有多个视图。

然后使用 .first 或 [0] 访问 View,使用 [1] 访问 view-2 等等。话虽如此,在 cmets 中 JAL 表示不能保证正确返回索引,最好使用 switchfilter 或使用 tags 获取视图。

【讨论】:

不确定您是否看到,但我链接您的图片(以及此答案中的图片)来自此问题的另一个答案。 @JAL 不,我没看到:D

以上是关于为啥“loadNibNamed”方法返回数组?的主要内容,如果未能解决你的问题,请参考以下文章

调用方法并将返回值分配给数组时,为啥C#在调用方法时使用数组引用?

目标 C:loadNibNamed 方法:它是如何工作的?

为啥 .NET 的 RandomNumberGenerator.GetBytes 方法将其结果分配给一个字节数组参数,而不是返回一个新的字节数组?

为啥 Array.prototype.every 在空数组上返回 true?

Swift - 为啥 Process.arguments 返回空数组

jquery选择器$("...")返回的是数组,为啥还能继续练式操作$("...").方法 ?