无法显示UISearchBar的结果

时间:2014-12-03 05:32:32

标签: ios uisearchbar

我是iOS开发的新手,并尝试获取搜索结果方面的帮助。一切都运转良好,但是当我搜索一个单词时,它没有显示结果,所以我会结束感谢你的帮助..这是代码......

- (void)viewDidLoad
{
    [super viewDidLoad];

    mytableview.delegate = self;
    mytableview.dataSource = self;
    SearchBar.delegate = self;

    titleArray = [[NSMutableArray alloc] initWithObjects:@"Arora town",@"Domino pizza ",@"thai hunt",nil];

    subtitleArray = [[NSMutableArray alloc] initWithObjects:@"wX<w (rHR< cg)",@"o;vDRuwkR(vXw>csK;cHed;o;wkRtd.tCd)<*kRuhRto; (vXw>urXur.tylR)<o;vDRxl.",nil];
}

这里是cellForRowAtIndexPath

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:   (NSIndexPath *)indexPath
{
    static NSString *cellidentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidentifier forIndexPath:indexPath];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier];
    }
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        cell.textLabel.text = [self.searchResults objectAtIndex:indexPath.row];
    }
    else
    {
        cell.textLabel.text = [titleArray objectAtIndex:indexPath.row];
    }
    return cell;
}

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", searchText];

    self.searchResults = [self.array filteredArrayUsingPredicate:predicate];
}

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    [self filterContentForSearchText:searchString
                               scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                       objectAtIndex:[self.searchDisplayController.searchBar
                                             selectedScopeButtonIndex]]];

    return YES;
}

1 个答案:

答案 0 :(得分:0)

Try This i Have tested.
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

   if(tableView==self.searchDisplayController.searchResultsTableView)
       return _results.count;
   else
       return  _countryNames.count;
}

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

   }
   if (tableView == self.searchDisplayController.searchResultsTableView) {
       cell.textLabel.text = [_results objectAtIndex:indexPath.row];
   } else {
      cell.textLabel.text = [_countryNames objectAtIndex:indexPath.row];
   }


   return cell;


}

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
   NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"SELF contains[cd] %@",
                                searchText];
   NSLog(@"%@",scope);
   _results = (NSMutableArray *)[_countryNames filteredArrayUsingPredicate:resultPredicate];
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
   [self filterContentForSearchText:searchString
                           scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                  objectAtIndex:[self.searchDisplayController.searchBar
                                                 selectedScopeButtonIndex]]];
   return YES;
}

in viewDidLoad 
initialize
_results=[[NSMutableArray alloc]init];
_countryNames=[[NSMutableArray alloc] initWithObjects:@"India",@"Pakistan",@"West Indies",@"Zimbabwe", nil];

delegate连接搜索栏storyboard