1

に奇妙な問題がありUISearchDisplayControllerます。

私のコードは次のとおりです。

numberOfRowsInSection:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  if ([[self searchDisplayController] isActive])
  {
    return [self.itemsFound count];

  } else {
    return [self.items count];
  }

  return [self.items count];
}

cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  FavouriteTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

  if (!cell)
  {
    cell = [[FavouriteTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
  }

  Facilities *f = nil;

  if ([[self searchDisplayController] isActive])
  {
    f = [self.itemsFound objectAtIndex:indexPath.row];

  } else {
    f = [self.items objectAtIndex:indexPath.row];
  }

  [cell.favouriteButton addTarget:self action:@selector(toggleFavourite:) forControlEvents:UIControlEventTouchUpInside];
  [cell.titleLabel setText:f.name];

  return cell;
}

次:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
  NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@",searchText];

  self.itemsFound              = [self.items filteredArrayUsingPredicate:resultPredicate];
}

shouldReloadTableForSearchString:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {

  self.itemsFound = nil;

  [self filterContentForSearchText:searchString
                           scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                  objectAtIndex:  [self.searchDisplayController.searchBar
                                                 selectedScopeButtonIndex]]];
  return YES;
}

私のテーブル:

テーブル

リストにある文字を入力すると:

文字aを入力した後

結果は存在しますが、リストに表示されていません。

次の写真では結果はなく、画面には正しい情報が表示されています。

結果がありません

結果が(コンソールに表示されている)ときに、2番目の画面に結果を表示できない理由がわかりません。

何か考えはありますか?

御時間ありがとうございます。

4

0 に答える 0