我有一个表格视图,并添加了这样的项目。
NSDictionary *memberInfo = [self.currentChannel infoForMemberWithID:memberID];
memberinfo=memberInfo;
cell.textLabel.text = [NSString stringWithFormat:@"%@",[memberinfo objectForKey:@"name"]];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",[memberinfo objectForKey:@"status"]];
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
return cell;
`它工作正常。现在我想在它上面添加一个搜索栏。我需要根据匹配的字符串加载tableview。但我正在加载像这样的tableview。我知道如何在数组中搜索我正在使用
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText.i want to load the table view according to the match of the searchstring ,Can anybody know this?
答案 0 :(得分:0)
您可以在SearchBar委托中使用NSPredicate来过滤主数组(成员或您命名的任何内容),并在另一个全局声明的数组中捕获结果。现在用这个过滤的数组重新加载你的表。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[_mArrFilteredList removeAllObjects]; //global array which will contain filtered results
NSString* searchStr = [NSString stringWithFormat:@"*%@*",_srbActivity.text];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"%K == %@",@"name", searchStr]; //will filter according to "name" key in your dictionary.
[_mArrFilteredList addObjectsFromArray:[_mArrList filteredArrayUsingPredicate:predicate]]; //_mArrList is your main array which has all the dictionaries.
[yourTableView reloadData];
}
现在在tableview数据源方法中,使用过滤后的数组(_mArrFilteredList)填充表。
答案 1 :(得分:0)
对于任何搜索实现,我们需要两个列表,一个是原始列表,另一个是已过滤我们通常会使用过滤列表填写表格。
在您的情况下,您可以将字典作为原始列表。对于筛选列表,您可以根据要求获得NSArray
值或键。
在搜索功能中过滤数组列表,重新加载表。在cellForRow
中从数组键获取对象或从数组值获取键 - 该键的后一个对象。