1

正常に機能する4つのラベルを持つテーブルがあります。これも正常に機能する検索バーを使用すると、テーブルには 2 つのラベルのみが表示されます。

- (void)viewDidLoad
  {
  [super viewDidLoad];
  NSString *filePath = [[NSBundle mainBundle] pathForResource:@"airports" ofType:@"json"];

 NSString *JSONData = [[NSString alloc] initWithContentsOfFile:filePath  encoding:NSUTF8StringEncoding error:NULL];
NSArray *airports = [NSJSONSerialization JSONObjectWithData:[JSONData dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];




finalArray = [[NSArray alloc]init];
finalArray = airports;
}



-(void)filterContentForSearchText:(NSString *)searchText{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF.airport_name  contains[cd] %@", searchText];
 self.searchResults = [finalArray filteredArrayUsingPredicate:resultPredicate];


 }

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

[self filterContentForSearchText:searchString];
return YES;
 }
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
// Return the number of sections.
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.tableView) {

   return [finalArray count];
 }else{

    return [searchResults count];
 }
  }

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:   (NSIndexPath *)indexPath
   {static NSString *simpleTableIdentifier = @"AirportCell";

  AirportCell *cell = (AirportCell *)[tableView   dequeueReusableCellWithIdentifier:simpleTableIdentifier];
 if (cell == nil)
 {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AirportCell" owner:self  options:nil];
    cell = [nib objectAtIndex:0];
  }

NSString *airportName = [[NSString alloc]init];
NSString *iataCode = [[NSString alloc]init];
NSString *icaoCode = [[NSString alloc]init];
NSString *countryAirport = [[NSString alloc]init];


if (tableView == self.tableView) {

    airportName = [[finalArray objectAtIndex:indexPath.row] objectForKey:@"airport_name"];
    iataCode = [[finalArray objectAtIndex:indexPath.row] objectForKey:@"iata_code"];
    icaoCode = [[finalArray objectAtIndex:indexPath.row] objectForKey:@"icao_code"];
    countryAirport = [[finalArray objectAtIndex:indexPath.row] objectForKey:@"country"];



    cell.iataCodeLabel.text = iataCode;
    cell.iataCodeLabel.font = [UIFont fontWithName:@"Verdana" size:13];
    cell.icaoCodeLabel.text = icaoCode;
    cell.icaoCodeLabel.font = [UIFont fontWithName:@"Verdana" size:13];

    cell.airportNameLabel.text = airportName;
    cell.airportNameLabel.font = [UIFont fontWithName:@"Verdana" size:13];

    cell.countryLabel.text = countryAirport;
    cell.countryLabel.font = [UIFont fontWithName:@"Verdana" size:13];

}else{



    airportName = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"airport_name"];
    iataCode = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"iata_code"];
    icaoCode = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"icao_code"];
    countryAirport = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"country"];


    cell.iataCodeLabel.text = iataCode;
    cell.iataCodeLabel.font = [UIFont fontWithName:@"Verdana" size:13];
    cell.icaoCodeLabel.text = icaoCode;
    cell.icaoCodeLabel.font = [UIFont fontWithName:@"Verdana" size:13];

    cell.airportNameLabel.text = airportName;
    cell.airportNameLabel.font = [UIFont fontWithName:@"Verdana" size:13];

    cell.countryLabel.text = countryAirport;
    cell.countryLabel.font = [UIFont fontWithName:@"Verdana" size:13];
}


return cell;
  }

ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

1

searchDisplayController がセルの高さを変更していると思います。この質問にある回答が役立つ場合があります。

于 2013-09-27T13:40:05.457 に答える