UITableViewDataSource
救助へのプロトコル。これは、この正確な問題を解決することを目的としています。1つを記述してから、リストごとUITableViewController
に異なるものに交換します。UITableViewDataSource
http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html
通常、Webに関するほとんどの例の場合と同様に、のdatasource
プロパティUITableViewController
はに設定されself
ます。しかし、これがそこにある理由ですUITableViewController
。そのため、テーブルのデータの生成方法を変更するだけで、コードをどこにでもコピーして貼り付ける必要はありません。
データセットの「違い」によっては、個別UITableViewDataSource
のを必要としない場合もあります。代わりに、唯一の内で使用しているデータ構造を変更するだけUITableViewDataSource
です。
大まかに言うと、デザインは次のようになります。
- BookStoreTableViewController
- BookListTableViewDataSource
- AuthorListTableViewDataSource
- 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];
}