如果从字典加载tableview,如何实现searchbar?

时间:2012-10-16 10:10:12

标签: iphone ios ipad

我有一个表格视图,并添加了这样的项目。

 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?

2 个答案:

答案 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中从数组键获取对象或从数组值获取键 - 该键的后一个对象。