shouldReloadTableForSearchString не показывает отфильтрованный результат - PullRequest
0 голосов
/ 27 октября 2010

Я пытался часами, но не мог понять, почему он не показывает отфильтрованный результат. Он всегда показывает все результаты. Я не уверен, что я делаю неправильно.

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    [self filterContentForSearchText:searchString scope:
  [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
    // Return YES to cause the search result table view to be reloaded.
    return YES;
}


- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
 /*
  Update the filtered array based on the search text and scope.
  */

 [self.filteredListContent removeAllObjects]; // First clear the filtered array.
    //for loop here
 NSLog(@"%i", [filteredListContent count]);
   //filteredListContent contains correct number of filtered items
}

1 Ответ

1 голос
/ 27 октября 2010

Работает.Я не использовал отфильтрованный массив результатов в методе numberOfRowsInSection

was:
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
            return [self.persons count];
    }


changed to:
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        if (tableView == self.searchDisplayController.searchResultsTableView)
        {
            return [self.filteredListContent count];
        }
        else
        {
            return [self.persons count];
        }
    }
...