0

検索バーには、CityとChurchの2つのスコープがあります。検索を実行するたびに、両方のスコープに空白のセルが表示されますが、検索結果は表示されます。対応するセル名を表示するにはどうすればよいですか?ありがとうございました!

私は問題が私のcellForRowAtIndexPathにあると考えました

if (tableView == self.searchDisplayController.searchResultsTableView) {
    if ([searchBar.scopeButtonTitles isEqual: @"City"]) {
        cell.textLabel.text = [[filteredResult objectAtIndex: indexPath.row] objectForKey: @"Places"];
    }

    else if ([searchBar.scopeButtonTitles isEqual: @"Church"]) {
        cell.textLabel.text = [[filteredResult objectAtIndex: indexPath.row] objectForKey: @"Church"];
    }
}

else {
    ...
}

[cell setAccessoryType: UITableViewCellAccessoryDisclosureIndicator];
return cell;

これは私の検索です:

- (void)filterListForSearchText:(NSString *)searchText scope:(NSString *)scope
{
    [filteredResult removeAllObjects];

    if ([scope isEqualToString: @"City"]) {
        for (NSDictionary *dictionarySearch in allRegion) {
            for (NSDictionary *citySearch in [dictionarySearch objectForKey: @"Cities"]) {
                [citySearch objectForKey: @"Cities"];
                NSRange rangeSearch = [[citySearch valueForKey: @"Places"] rangeOfString: searchText options: (NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
                if (rangeSearch.location != NSNotFound) {
                    [filteredResult addObject: citySearch];
                }
            }
        }
    }

    if ([scope isEqualToString: @"Church"]) {
        for (NSDictionary *dictionarySearch in allRegion) {
            for (NSDictionary *citySearch in [dictionarySearch objectForKey: @"Cities"]) {
                for (NSDictionary *churchSearch in [citySearch objectForKey: @"Churches"]) {
                    [churchSearch objectForKey: @"Churches"];
                    NSRange rangeSearch = [[churchSearch valueForKey: @"Church"] rangeOfString: searchText options: (NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
                    if (rangeSearch.location != NSNotFound) {
                        [filteredResult addObject: churchSearch];
                    }
                }
            }
        }
    }
}
4

3 に答える 3

0

この例がお役に立てば幸いです。リンクされた例の「searchResults」の「filterContentForSearchText」に「if」と「elseif」を配置するだけで、確実に機能します。

于 2012-12-29T06:34:24.383 に答える
0

検索バーでNSMutableArrayを使用すると役立つと思います。リンクからサンプルプロジェクトを入手できます。https://github.com/AalokParikh/MyDemoApps

于 2012-12-29T06:34:48.620 に答える
0

私は自分の質問に対する答えを見つけました。

cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    if (tableView == self.searchDisplayController.searchResultsTableView) {
        if (searchBar.selectedScopeButtonIndex == 0) {
            cell.textLabel.text = [[filteredResult objectAtIndex: indexPath.row] objectForKey: @"Places"];
        }

        else if (searchBar.selectedScopeButtonIndex == 1) {
            cell.textLabel.text = [[filteredResult objectAtIndex: indexPath.row] objectForKey: @"Church"];
        }
    }

    else {
        ...
    }

    [cell setAccessoryType: UITableViewCellAccessoryDisclosureIndicator];
    return cell;
}

searchBar.selectedScopeButtonIndex == 0スコープ市とsearchBar.selectedScopeButtonIndex == 1スコープ教会のために

于 2013-01-06T08:33:26.913 に答える