UITableViewDataSource
救援协议。它旨在解决这个确切的问题。你会写一个UITableViewController
,然后UITableViewDataSource
为每个列表换一个不同的。
http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html
通常,与网络上的大多数示例一样, 的datasource
属性UITableViewController
设置为self
。UITableViewController
但这就是它存在的原因,因此当您只修改为表生成数据的方式时,您不必到处复制/粘贴代码。
根据您的数据集的“不同”程度,您甚至可能不需要单独UITableViewDataSource
的UITableViewDataSource
.
在高层次上,您的设计可能如下所示:
- BookStoreTableViewController
- BookListTableViewDataSource
- 作者列表表视图数据源
- PublisherListTableViewDataSource
- 等等
这是显示不同列表的示例方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
BookStoreTableViewController *controller = [[BookStoreTableViewController alloc] initWithNibName:@"BookStoreTableViewController" bundle:nil];
//This is where you'd need to put some logic to determine which datasource to use
BookListTableViewDataSource *datasource = [[BookListTableViewDataSource alloc] init];
datasource.listOfBooks = [bookstoreDictionary objectForKey:@"bookList"];
controller.datasource = datasource;
[datasource release];
[self.navigationController pushViewController:controller animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[controller release];
}