-1

过去,我按照一个小教程在我的 UITableView 中实现了一个 UISearchBar。

它是由数组组成的。现在我有了处理所有内容的 .plist 文件,那么 searchBar 会怎么样?我的意思是,我做了类似的事情:

 copyLists = [[NSMutableArray alloc] initWithArray:sortedList copyItems:YES];

其中 sortedList 是包含 plist 的数组。

基本上 searchBar 工作正常,但是当我输入一个单词时,它不显示任何单元格,即使我写了一个单元格的确切名称。

它是否应该返回nameplist 中包含的作为单元名称的键?

searchBar 将如何随 plist 改变?

4

1 回答 1

1
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    [self.filteredList removeAllObjects]; // First clear the filtered array.

    NSArray *objcts = unfilteredList;

    for (NSDictionary *section in objcts)
    {
        for (NSDictionary *row in [section valueForKey:@"Rows"])
        {
            NSRange rng = [[row valueForKey:@"name"] rangeOfString:searchString options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];

            if (rng.length != 0)
                [self.filteredList addObject:row];
        }
    }
    // Return YES to cause the search result table view to be reloaded.
    return YES;
}

确保您Search Bar and Search Display Controller delegate设置正确。然后用于显示单元格使用:

NSArray *rows;
if (tableView == self.searchDisplayController.searchResultsTableView)
{
    rows = filteredList;
} else {
    NSDictionary *section = [unfilteredList objectAtIndex:indexPath.section];
    rows = [section objectForKey:@"Rows"];
}
cell.textLabel.text = [[rows objectAtIndex:indexPath.row] objectForKey:@"name"];

并更改 , 等的rowCount逻辑titleHeader

于 2012-06-11T17:00:49.350 回答