Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

One UITableView - Multiple DataSource, best design pattern?

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.

like image 897
user52138 Avatar asked Jan 06 '09 18:01

user52138


1 Answers

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.

like image 96
August Avatar answered Oct 04 '22 06:10

August