gpt4 book ai didi

objective-c - 显示预加载的搜索结果?

转载 作者:技术小花猫 更新时间:2023-10-29 10:32:28 24 4
gpt4 key购买 nike

我有一个带有搜索栏的非表格 View View ,虽然它工作得很好,但当搜索栏中有空字符串时,搜索显示 Controller 会隐藏表格 View 并覆盖一个黑暗的变暗 View 。我希望它在搜索栏中有空字符串时显示预加载的数据,而不是隐藏表格 View 并覆盖搜索栏下方的暗暗 View 。就像 iOS 版 Safari 中 Google 搜索栏的工作方式一样。

之前在stackoverflow上发现了一个类似的问题: UISearchDisplayController - how to preload searchResultTableView ,我真的无法让它工作。

我可以毫无问题地获取预加载数据并为其设置当前数据,但我不确定如何防止显示 Controller 删除 searchResultsTableView。

提前致谢。

最佳答案

我终于找到了一种方法来做到这一点。

我发现 searchDisplayController 只是从父 View 中删除了 searchResultsTableView,所以只要显示 Controller 试图隐藏 TableView ,我就将 TableView 添加回父 View :

- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView
{
// add the tableview back in
[self.view addSubview:self.searchDisplayController.searchResultsTableView];
}

然后我还必须在第一次单击搜索栏时显示表格 View ,所以我这样做了:

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
// after the data has been preloaded
self.searchResults = self.allItems;
[self.searchDisplayController.searchResultsTableView reloadData];
}

- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
[self.view addSubview:self.searchDisplayController.searchResultsTableView];
}

对我来说,“allItems”是我存储所有可搜索项目的地方,“searchResults”是存储过滤项目(搜索后)的地方。当然,您必须在重新加载数据之前预加载项目(例如搜索历史记录)。

我不知道这在性能方面是否是一种好方法,但它对我来说效果很好,我希望这对其他人也有用。如果有更好的方法,请发表评论。

关于objective-c - 显示预加载的搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10734681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com