如何显示 UISearchBar 搜索的建议?

how to show suggestion for UISearchBar search?

我正在制作一个演示天气应用程序,我在其中使用 UISearchBar 所以用户可以输入城市名称,但我不知道如何显示建议。

例如,如果用户输入 "lon",那么应该有城市名称建议从 "lon" 开始,例如伦敦等

UISearchBar 有自己的授权协议 UISearchBarDelegate,方法 -

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

使在编辑时可以做一些额外的操作,在这里你可以把你的NSPredicate看是否插入的文本有一个城市BEGINSWITHCONTAINS输入的文本。

你可以通过

  1. 创建要显示的位置的数组(列表)...在数组中添加对象!

    NSArray *list;

    NSArray *listFiles;

2.Filter内容..

-(void)filter :(NSString *) match1


    listFiles = [[NSMutableDictionary alloc] init];

    NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"FullName BEGINSWITH[c] %@", match1];

    listFiles = [[ContactDect filteredArrayUsingPredicate:sPredicate ] mutableCopy];
    f_name_array=[[NSMutableArray alloc]init];

    for (NSDictionary *d in listFiles) {

        [self.f_name_array addObject:[d objectForKey:@"FullName"]];

    }
    list=f_name_array;
    NSLog(@"%@",list);



}
  1. 然后计算 numberOfRowsInTableview 中的列表:

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

  1. cellForRow:::

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {<br> 静态 NSString *CellIdentifier = @"abccell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; cell.textLabel.text = [NSString stringWithFormat:@"%@" ,[listFiles objectAtIndex:indexPath.row]]; return 单元格; }

Call the Filter method while editing textFeild !

[self filter:textfeild1.text];

希望对你有所帮助.....