问题
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.
回答1:
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.
来源:https://stackoverflow.com/questions/417678/one-uitableview-multiple-datasource-best-design-pattern