我正在制作一个演示天气应用程序,在这里我使用UISearchBar所以可以用户输入城市名称,但我不知道如何显示该建议。
例如,如果用户输入“lon”,那么应该有城市名称建议从伦敦等“lon”开始
答案 0 :(得分:1)
UISearchBar
有自己的授权协议UISearchBarDelegate
,方法 -
-(BOOL)searchBar:(UISearchBar *)searchBar
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
在编辑时可以执行一些额外操作,您可以在此处NSPredicate
查看插入的文字是否包含BEGINSWITH
或CONTAINS
输入文字的城市。
答案 1 :(得分:0)
你可以通过
来做到这一点创建一个要显示的地方的数组(List)...在数组中添加对象!
NSArray *list;
NSArray *listFiles;
2.过滤内容..
-(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);
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [listFiles count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"abccell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"%@" ,[listFiles objectAtIndex:indexPath.row]];
return cell;
}
编辑textFeild时调用Filter方法!
[self filter:textfeild1.text];
我希望它会对你有所帮助.....