Один UITableView - несколько источников данных, лучший шаблон проектирования?
Это похоже на типичную проблему, но у меня есть UITableView, который имеет идентичное поведение для двух отдельных источников данных. Каков наилучший способ разработки иерархии классов с минимальным дублированием и условиями if / else? Контроллер представления собирается сделать то же самое с обоими источниками данных, они просто уникальны в своем наборе данных. Должен ли родительский контроллер просто установить свой источник данных / соответствующий заголовок?
Та же проблема актуальна и при использовании UISegmentControl для отображения двух представлений с одинаковыми интерфейсами, но с разными источниками данных.
1 ответ
Будьте осторожны с вашей терминологией здесь. UITableView имеет то, что называется dataSource
но вы, кажется, имеете в виду, по сути, два разных набора данных.
В случае, если вы предлагаете, в таблице dataSource
(объект, который придерживается протокола UITableViewDataSource), у меня было бы три массива.
- currentlyViewedArray
- datasetOneArray
- datasetTwoArray
В методах dataSource используйте currentViewedArray в качестве источника данных таблицы.
Затем установите в данный момент ViewViewedArray тот массив, который вы хотите просмотреть:
self.currentlyViewedArray = self.datasetOneArray;
[theTableView reloadData];
Вы можете использовать UISegmentedControl для переключения между двумя массивами.