Один UITableView - несколько источников данных, лучший шаблон проектирования? - PullRequest
5 голосов
/ 06 января 2009

Это похоже на типичную проблему, но у меня есть UITableView, который имеет идентичное поведение для двух отдельных источников данных. Каков наилучший способ разработки иерархии классов с минимальным дублированием и условиями if / else? Контроллер представления собирается сделать то же самое с обоими источниками данных, они просто уникальны в своем наборе данных. Должен ли родительский контроллер просто установить свой источник данных / соответствующий заголовок?

Та же проблема актуальна и при использовании UISegmentControl для отображения двух представлений с одинаковыми интерфейсами, но с разными источниками данных.

1 Ответ

12 голосов
/ 06 января 2009

Будьте осторожны с вашей терминологией здесь. У UITableView есть нечто, называемое dataSource, но вы, по сути, имеете в виду два разных набора данных.

В случае, если вы предлагаете, в таблице dataSource (объект, который придерживается протокола UITableViewDataSource), у меня будет три массива.

  • currentlyViewedArray
  • datasetOneArray
  • datasetTwoArray

В методах dataSource используйте currentViewedArray в качестве источника данных таблицы.

Затем установите для текущего объекта ViewArArray тот массив, который вы хотите просмотреть:

self.currentlyViewedArray = self.datasetOneArray;
[theTableView reloadData];

Вы можете использовать UISegmentedControl для переключения между двумя массивами.

...