当点击值单元格时显示这些新单元格的最佳方式是什么(当然,在重新点击值单元格的情况下再次隐藏它们)。
最简单的方法是在展开单元格时向数据数组添加更多行,并在折叠时删除它们。自定义“子列表单元格”的外观并跟踪当前展开的单元格。您也可以考虑使用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
希望这可以帮助!