fly_basket
fly_basket

Reputation: 49

Why "loadNibNamed" methods return array?

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);

Upvotes: 2

Views: 468

Answers (3)

chinnawatp
chinnawatp

Reputation: 1530

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 enter image description here

Upvotes: 4

mfaani
mfaani

Reputation: 36287

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.

enter image description here

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.

Upvotes: 2

regetskcob
regetskcob

Reputation: 1192

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.

Upvotes: 4

Related Questions