Arhn - архитектура программирования

Связывание UITableView с NSMutableArray

Это не сообщение «пожалуйста, помогите мне отладить мой код». У меня это действительно работает, но я хочу глубже понять, как это работает!

У меня есть приложение xCode на основе представления. В моем основном представлении у меня есть UITableView, и я установил для делегата и источника данных владельца файла.

В моем файле .h для Main ViewController в разделе @interface я объявляю NSMutableArray, который будет содержать список пользовательских объектов.

В объявлении @interface я включаю протоколы UITableViewDelegate и UITableViewDataSource.

Позже, после нескольких нажатий кнопок, мой код анализирует XML-файл с сервера и вставляет объекты в NSMutableArray. Я добавил код в функцию cellForRowAtIndexPath, которая вызывается так, как должна, и когда я вызываю метод reloadData для своего UITableView, таблица заполняется результатами, проанализированными из моего XML!

Довольно круто, но я хотел бы понять, как это происходит; лучшее понимание будет полезно для меня в будущем.

Я никогда явно не привязываю свой NSMutableArray к этому UITableView. Почему вызывается cellForRowAtIndexPath при добавлении объекта в массив? Как это связано? Это потому, что NSMutableArray объявлен в блоке @interface, в котором есть протоколы, о которых я упоминал выше? Если бы у меня было два UITableViews в моем .XIB, как бы код узнал, какой NSMutableArray должен быть сопоставлен с каким UITableView? (Или этого мне следует избегать?) Даже если у меня есть только UITableView в XIB, если у меня есть два NSMutableArray, нужно ли мне беспокоиться о том, что они каким-то образом запутывают мой UITableView?

Спасибо!


Ответы:


1

NSMutableArray --- в вашем случае это данные, которые будут отображаться в виде таблицы. Когда должно произойти отображение, представление таблицы запросит данные, используя источник данных.

Как они связаны -- Источник данных запрашивает данные, если нет другой явной связи.

Как работать с двумя табличными представлениями. Идеальный подход — использовать разные объекты источника данных для каждого табличного представления, каждый объект будет иметь свой собственный NSMutableArray данных.

1 табличное представление и 2 NSMutableArray. Это зависит от реализации источника данных, в зависимости от ваших потребностей вы можете отображать данные любых объектов NSMutableArray.

Почему cellForRowAtIndexPath вызывается при добавлении объекта в массив? -- возможно, вы вызываете представление reloadData

20.06.2011

2

Всякий раз, когда вы вызываете [tableView reloadData]; вызывается ваш метод cellForRowAtIndexPath и numberOfRowsInSection.

Это из-за протокола UITableViewDataSource. Между NSMutableArray и UITableView нет связи.

Когда в массив добавляется новый объект, после этого [tableView reloadData]; будет называться. Следовательно, теперь метод cellForRowAtIndexPath будет вызываться для массива, в котором счетчик будет увеличен на 1.

Надеюсь, что это поможет. :)

03.08.2011
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..