1

我想创建一个选择依赖项列表,但我不知道在我的应用程序中最好的方法是什么。

选择依赖列表示例

根据第一个列表中的用户选择,他们将获得另一个带有附加选项的列表。其他列表将包含不同的数据。在从列表选项中进行所有选择后,用户将看到最终表格视图,其中包含他们在此过程中选择的所有项目。

我正在考虑创建一个包含所有列表选项的 TableView。从 TableView 中仅选择一个项目会将用户移动到另一个 TableView,而另一个列表取决于他之前的选择。

不幸的是,通过这种方式,我最终会在我的故事板上拥有 13 个不同的 TableView 控制器,而且感觉不太对劲。

我确信必须有另一种更有效的方法来做到这一点,但我只是不知道如何。

请指教,谢谢!

4

1 回答 1

0

UITableViewDataSource救援协议。它旨在解决这个确切的问题。你会写一个UITableViewController,然后UITableViewDataSource为每个列表换一个不同的。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html

通常,与网络上的大多数示例一样, 的datasource属性UITableViewController设置为selfUITableViewController但这就是它存在的原因,因此当您只修改为表生成数据的方式时,您不必到处复制/粘贴代码。

根据您的数据集的“不同”程度,您甚至可能不需要单独UITableViewDataSourceUITableViewDataSource.

在高层次上,您的设计可能如下所示:

  • 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];
}
于 2012-11-11T15:23:43.800 回答