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

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

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

1 ответ

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

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

  • currentlyViewedArray
  • datasetOneArray
  • datasetTwoArray

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

Затем установите в данный момент ViewViewedArray тот массив, который вы хотите просмотреть:

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

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

Другие вопросы по тегам