为啥“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 表示不能保证正确返回索引,最好使用 switch
、filter
或使用 tag
s 获取视图。
【讨论】:
不确定您是否看到,但我链接您的图片(以及此答案中的图片)来自此问题的另一个答案。 @JAL 不,我没看到:D以上是关于为啥“loadNibNamed”方法返回数组?的主要内容,如果未能解决你的问题,请参考以下文章
调用方法并将返回值分配给数组时,为啥C#在调用方法时使用数组引用?
为啥 .NET 的 RandomNumberGenerator.GetBytes 方法将其结果分配给一个字节数组参数,而不是返回一个新的字节数组?
为啥 Array.prototype.every 在空数组上返回 true?