【问题标题】:How to use "sublists" in a UITableView and with a search bar?如何在 UITableView 和搜索栏中使用“子列表”?
【发布时间】:2013-06-05 08:14:47
【问题描述】:

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

选择一个值细胞时,它会从所选值的值中打开带有子值的新单元。

它还可以让用户在这些单元格之间进行搜索。

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

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

感谢您的帮助。

【问题讨论】:

    标签: ios uitableview cell uisearchbar show-hide


    【解决方案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

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        相关资源
        最近更新 更多