0

在我的应用程序中,我有 3 NSMutableArraysempJsonArray searchArraynameArray

empJsonArray使用 JSON 填充。 nameArrayvalueForKey:@"Name"from填充empJsonArraysearchArray最初用 的内容填充empJsonArray

数据显示在UITableView

现在我UISearchBar用于搜索我的UITableView并显示相关数据。UISearchBar工作正常,但显示搜索数据时出现问题。假设当我搜索“T”时,我有 2 个包含字母“T”的名称UITableView显示 2 个项目,但形成了nameArray(即索引 0 和 1)的顶部,而不是包含“T”的项目。

我也在使用NSSortDescriptor.

这是代码: -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MYCell"];
if (!cell) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MYCell"];
}
sorter = [[NSSortDescriptor alloc]initWithKey:@"Name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
sortedArray = [self.empJsonArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]];
cell.textLabel.text = [[sortedArray objectAtIndex:indexPath.row]objectForKey:@"Name"];
nameArray = [[NSMutableArray alloc]initWithArray:[sortedArray valueForKey:@"Name"]];

return cell;

}

搜索方法:

- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {

if ([searchText length]==0) {
    [searchArray removeAllObjects];
    [searchArray addObjectsFromArray:nameArray];

}
else {
    [searchArray removeAllObjects];
    for (NSString *string in nameArray) {
        NSRange r = [string rangeOfString:searchText options:NSCaseInsensitiveSearch];
        if (r.location != NSNotFound) {
            [searchArray addObject:string];
        }
    }
}
[empTable reloadData];

}

你可以在这里看到截图 1.搜索前 2.搜索后

4

1 回答 1

0

问题解决了。

而不是显示搜索结果cell

cell.textLabel.text = [[searchArray objectAtIndex:indexPath.row]

我在展示

cell.textLabel.text = [[sortedArray objectAtIndex:indexPath.row]objectForKey:@"Name"];
于 2012-09-20T09:16:10.980 回答