1

我想要做的是以下内容:它基本上是一个表格视图,显示一些具有许多值的单元格。

在此处输入图像描述

选择值单元格时,它会打开新单元格,其中包含所选值的子值。

在此处输入图像描述

它还将让用户能够在这些单元格之间进行搜索。

在此处输入图像描述

我已经使用了很多 UITableViews,所以我在选择、显示数据、处理事件等方面没有问题。我从未使用过带有搜索栏的表格视图,但从我在许多教程中的红色来看,它看起来并不那么复杂。所以只有两点我需要你的帮助。

  • 当点击值单元格时显示这些新单元格的最佳方式是什么(当然,在重新点击值单元格的情况下再次隐藏它们)。
  • 最棘手的一点似乎在这里,我如何使用搜索栏只查找值单元格中的数据而不是子值单元格中的数据?例如,如果用户已经从值 2 和 5 中点击并打开了子值,如果他在搜索栏中插入“2”,则值为“5”的单元格及其所有子值单元格将被隐藏,但“2”一个将继续显示其子值。

谢谢你的帮助。

4

2 回答 2

1

当点击值单元格时显示这些新单元格的最佳方式是什么(当然,在重新点击值单元格的情况下再次隐藏它们)。

最简单的方法是在展开单元格时向数据数组添加更多行,并在折叠时删除它们。自定义“子列表单元格”的外观并跟踪当前展开的单元格。您也可以考虑使用https://github.com/OliverLetterer/UIExpandableTableView(我没有使用它,所以不能真正评论它)。

最棘手的一点似乎在这里,我如何使用搜索栏只查找值单元格中的数据而不是子值单元格中的数据?例如,如果用户已经从值 2 和 5 中点击并打开了子值,如果他在搜索栏中插入“2”,则值为“5”的单元格及其所有子值单元格将被隐藏,但“2”一个将继续显示其子值。

我会说,这是更容易的部分。您负责搜索表格视图数据并向搜索显示控制器提供过滤列表。这是通过以下两种方法完成的:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    [self filterContentForSearchText: searchString
                               scope: [self.searchDisplayController.searchBar scopeButtonTitles][[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
    return YES;
}


- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption
{
    [self filterContentForSearchText: [self.searchDisplayController.searchBar text]
                               scope: [self.searchDisplayController.searchBar scopeButtonTitles][searchOption]];
    return YES;
}

在该filterContentForSearchText:scope:方法中,仅搜索“超列表单元格”,而不搜索“子列表单元格”。您可以自定义搜索显示表格的单元格,使其看起来像超级列表/子列表:UITableView Controller with prototype custom cell and search display controller tableview

希望这可以帮助!

于 2013-06-05T08:28:33.293 回答
1

当点击值单元格时显示这些新单元格的最佳方式是什么(当然,在重新点击值单元格的情况下再次隐藏它们)。

看看 GitHub 上的TLIndexPathTools 项目。它使构建这样的动态表变得容易,而且工作量很小。最值得注意的是,它会自动进行批量更新以在状态之间设置动画。有几个示例项目,与您的情况最相似的是可折叠的“大纲”项目

于 2013-06-05T14:36:26.280 回答