Why “loadNibNamed” methods return array?

半城伤御伤魂 提交于 2019-12-20 03:12:31

问题


When we use the loadNibNamed method to get nib file, why will return a array, is not a nib file name corresponds to a nib file? I try to print this array's count, I found it always return 1. I hope you can help me to explain, thank you every much! Here is the snippet of code :

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

回答1:


This is because NIB/xib files can also contain more than one view representation. So within the array you can access all of the contained views.




回答2:


The reason that xib return an array is that ".XIB" can contain multiple views. The advantage is that you don't have to create one xib file for one view. You simply just put multiple views into one XIB and access it from an array

Example
.Xib --> array[view1, view2, view3, view4]

You can see from image




回答3:


Thanks to the discussion here:

This is a legacy design left over from the early days of ProjectBuilder/PBX/Interface Builder. I would strongly not recommend this approach and just use separate xib files. I do not see any benefit.

However if decided to still do it, you can have multiple views as such.

And access View with .first or [0], view-2 with [1] and so on. Having that said in the comments JAL has said it's not guaranteed to return the indexes correctly and it's better to switch, filter or use tags for the views.



来源:https://stackoverflow.com/questions/36148706/why-loadnibnamed-methods-return-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!