gpt4 book ai didi

ios - 如何使用uisearchcontroller在ios 9中添加tableview的搜索选项,与objectiveC

转载 作者:行者123 更新时间:2023-12-01 17:13:17 25 4
gpt4 key购买 nike

我有一个成功显示数据的 tableView,现在我想要为它提供搜索功能。 UISearchDisplayController 在 iOS 9 中已弃用,我是 iOS 新手。所以请告诉我这样做的方法。
如果有人可以逐步提供代码,我将不胜感激,它也会对其他人有所帮助。这是我的 tableView 代码。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [airportList count];
}

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



UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ci"];

Details *newDetails = [airportList objectAtIndex:indexPath.row];

cell.textLabel.text = newDetails.airport;

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

Details *newDetails = [airportList objectAtIndex:indexPath.row];
NSString *selectedText = newDetails.airport;
[[NSUserDefaults standardUserDefaults] setObject:selectedText forKey:@"st"];
[[NSUserDefaults standardUserDefaults] synchronize];

[self dismissViewControllerAnimated:YES completion:nil];
}

最佳答案

您可以使用 UISearchController在 iOS 9 中

首先为 UISearchController 声明一个属性

@property (strong, nonatomic) UISearchController *searchController;

然后,在 viewDidLoad
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;

创建 UISearchController 时我们不需要单独的搜索结果 Controller ,因为我们将使用 UITableViewController本身。
同样,我们也将使用 UITableViewController通过实现 UISearchResultsUpdating 来更新搜索结果协议(protocol)。
我们不想让底层内容变暗,因为我们想在用户输入搜索栏时显示过滤后的结果。 UISearchController负责为我们创建搜索栏。 UITableViewController当用户更改搜索范围时,它还将充当搜索栏委托(delegate)。

接下来,添加 searchBar到 tableview 标题
self.tableView.tableHeaderView = self.searchController.searchBar;

由于搜索 View 在事件时会覆盖表格 View ,因此我们将 UITableViewController定义演示上下文:
self.definesPresentationContext = YES;

我们需要实现 UISearchResultsUpdating委托(delegate)在搜索文本更改时生成新的过滤结果:
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
NSString *searchString = searchController.searchBar.text;
[self searchForText:searchString scope:searchController.searchBar.selectedScopeButtonIndex];
[self.tableView reloadData];
}

关于ios - 如何使用uisearchcontroller在ios 9中添加tableview的搜索选项,与objectiveC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34585625/

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