One UITableView - Multiple DataSource, best design pattern?
Asked Answered
M

1

5

This seems like a typical problem, but I have a UITableView that has identical behavior for two separate data sources. What is the best way of going about designing the class hierarchy to have as little duplication and if/else conditions? The view controller is going to do the same exact thing to both data sources, they're just unique in their data set. Should I have the parent controller just set its data source/respective title?

The same issue is relevant as well when using a UISegmentControl for displaying two views with the same interfaces, but different data sources.

Metheglin answered 6/1, 2009 at 18:46 Comment(0)
P
12

Be careful with your terminology here. A UITableView has something called a dataSource but you seem to be referring, essentially, to two different sets of data.

In the case you're suggesting, in the table's dataSource (the object that adheres to the UITableViewDataSource protocol), I'd have three arrays.

  • currentlyViewedArray
  • datasetOneArray
  • datasetTwoArray

In the dataSource methods, use the currentlyViewedArray as the source of the table's data.

Then, set the currentlyViewedArray to whichever array you want to view:

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

You can use the UISegmentedControl to switch between the two arrays.

Pneumoconiosis answered 6/1, 2009 at 19:5 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.