1

選択の依存関係リストを作成したいのですが、アプリでそれを行うための最良の方法がわかりません。

選択依存リストの例

最初のリストからのユーザーの選択に基づいて、追加のオプションを含む別のリストが提供されます。追加のリストには、さまざまなデータが含まれます。リストオプションからすべての選択を行った後、ユーザーはプロセスで選択したすべてのアイテムを含む最終的なテーブルビューを表示します。

すべてのリストオプションを含むTableViewを作成することを考えていました。TableViewからアイテムを1つだけ選択すると、ユーザーは別のTableViewに移動し、前の選択に応じて別のリストが表示されます。

残念ながら、このようにすることで、ストーリーボードに13の異なるTableViewコントローラーが表示され、正しく感じられなくなります。

これを行うには別のより効率的な方法があるはずですが、方法がわかりません。

アドバイスをお願いします、ありがとう!

4

1 に答える 1

0

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];
}
于 2012-11-11T15:23:43.800 に答える