2016-03-22 7 views
2

Когда мы используем метод loadNibNamed для получения файла nib, зачем возвращать массив, имя файла nib не соответствует файлу nib? Я пытаюсь напечатать подсчет этого массива, я нашел, что он всегда возвращается 1. Надеюсь, вы поможете мне объяснить, спасибо вам всем! Ниже приведен фрагмент кода:Почему методы «loadNibNamed» возвращают массив?

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

Вы также тестируете файлы xib с несколькими видами внутри? Вот почему этот метод возвращает массив. xib может содержать более одного вида. –

+1

О, я вижу, спасибо. Я перетаскиваю ViewController в файл xib и нашел его return 2. :) –

ответ

3

Это потому, что файлы NIB/xib также могут содержать более одного представления представления. Таким образом, внутри массива вы можете получить доступ ко всем содержащимся представлениям.

3

Причина, по которой xib возвращает массив, заключается в том, что «.XIB» может содержать несколько видов. Преимущество состоит в том, что вам не нужно создавать один файл xib для одного вида. Вы просто просто поставить несколько видов в один XIB и доступ к нему из массива

Пример
.xib -> массив [view1, view2, view3, view4]

Вы можете увидеть от изображения enter image description here

1

Благодаря дискуссии here:

Это наследство дизайн осталось от первых дней ProjectBuilder/PBX/Interface Builder. Я бы настоятельно не рекомендовал этот подход и просто использовал отдельные файлы xib. Я не вижу никакой пользы.

Однако, если принято решение сделать это, вы можете иметь несколько видов как таковых.

enter image description here

и доступ Вид с .first или [0], вид-2 с [1] и так далее. Имея это в комментариях, JAL сказал, что не гарантированно вернуть индексы правильно, и лучше использовать switch, filter или использовать tag для просмотра.

+1

Не уверен, что вы видели, но изображение, которое я связал с вами (и тот, в котором он был), получен из другого ответа на этот вопрос. – JAL

+0

@JAL Нет, я не видел: D – Honey

Смежные вопросы