-1

過去に、UITableView で UISearchBar を実現するための小さなチュートリアルに従いました。

それは配列でできていました。すべてを処理する .plist ファイルができたので、searchBar はどのようになりますか? つまり、私は次のようなことをしました:

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

sortedList は、plist を含む配列です。

基本的に searchBar は正常に動作しますが、単語を入力すると、セルの正確な名前を書いてもセルが表示されません。

nameセルの名前である plist に含まれるキーを返す必要がありますか?

plists で searchBar はどのように変化しますか?

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"];

rowCounttitleHeaderなどのロジックを変更します。

于 2012-06-11T17:00:49.350 に答える