【问题标题】:How to only show one table view for a UISearchDisplayController implementation如何为 UISearchDisplayController 实现只显示一个表视图
【发布时间】:2014-02-21 20:29:18
【问题描述】:

我目前在 Storyboard 中使用 UISearchDisplayController 的默认配置,我将 UISearchBar 和 SearchDisplayController 拖到现有的 UITableViewController 上。因为它被拖到 TableViewController 上,所以我正在管理 两个 表 - self.tableViewself.searchDisplayController.searchResultsTableView

我想要完成的是仅在用户打开此视图时将tableView 显示为默认表,并反映以显示用户的搜索。如图(取自 RW tutorial):

我想要实现的是,当您输入单词“egg”时,RecipeBookVC 的tableView 会删除没有“egg”的行,因此您会看到在@987654328 中查看的结果@ 而不必从resultsTableView 看到它。 (最好不要隐藏导航栏,这样搜索感觉更像是“过滤器”而不是搜索)

谢谢!

【问题讨论】:

    标签: ios iphone uitableview ios7 uisearchdisplaycontroller


    【解决方案1】:

    我认为您实际上并不需要搜索显示控制器。您只需要一个表格视图(可能是UITableViewController)和UISearchBar。表视图显示包含数据的数组的内容。每当搜索查询更改时,您都会相应地更新该数组,并重新加载 tableView 以显示更新后的数组数据。这将为您提供所需的过滤感觉。

    要在表格视图中显示数据,您将使用

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    

    并在您使用的用户类型时获取查询

    - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    

    过滤数据源数组后,调用[self.tableView reloadData]

    我继续将a sample project 与实现的方法结合在一起,这样我的意思就更清楚了。希望这对你有用。

    【讨论】:

    • 这真是太棒了 - 感谢您精心制作并告诉我如何做到这一点!非常感谢您的帮助!
    • 嘿@kevin,我只是想说这是一个非常有用的项目,我会继续回来。干得好,伙计。
    • @daspianist 很高兴听到它! :)
    • 想让你知道这是一个我不断回来的项目和问题,即使过了这么长时间。谢谢凯文!
    猜你喜欢
    • 2023-04-09
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2019-07-10
    • 2018-12-07
    • 2013-12-23
    相关资源
    最近更新 更多