如何仅显示UISearchDisplayController实现的一个表视图

时间:2014-01-29 19:52:35

标签: ios iphone uitableview ios7 uisearchdisplaycontroller

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

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

enter image description here

我想要实现的是,当你输入单词“egg”时,RecipeBookVC的tableView将摆脱没有“egg”的行,所以你留下的结果是self.tableview,无需在resultsTableView中看到它。 (最好也不要隐藏导航栏,因此搜索感觉更像是“过滤器”而不是搜索)

谢谢!

1 个答案:

答案 0 :(得分: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与实施的方法一起搅打,所以我的意思更加清晰。希望这适用于你。