2012-12-29 36 views
0

我在我的搜索欄中有兩個範圍:城市和教堂。每次執行搜索時,兩個範圍都會顯示空白單元格,但它們確實有搜索結果。我如何顯示其相應的單元名稱?謝謝!如何顯示範圍內的搜索結果?

我想通這個問題是在我的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]; 
        } 
       } 
      } 
     } 
    } 
} 
+1

謝謝@Foram的修正。 ;) – Jahm

回答

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的範圍教派

0

希望This Example會幫助你。 只需在鏈接示例中的「searchResults」的「filterContentForSearchText」中放置「if」和「else if」的東西,那肯定會起作用。

+0

正如你所看到的,你的filterContentForSearchText和我的filterListForSearchText是一樣的。唯一的區別是你使用的是NSPredicate,而我沒有。我仍然不明白。 :( – Jahm