J'ai une tableView qui affiche les données avec succès et maintenant ce que je veux, c'est lui fournir la fonction de recherche. UISearchDisplayController est obsolète dans iOS 9 et je suis nouveau sur iOS. Alors s'il vous plaît, dites-moi comment procéder. Si quelqu'un peut fournir un code étape par étape, je l'apprécie et cela aidera également les autres.C'est mon code tableView.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [airportList count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{



    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ci"];

    Details *newDetails = [airportList objectAtIndex:indexPath.row];

    cell.textLabel.text = newDetails.airport;

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    Details *newDetails = [airportList objectAtIndex:indexPath.row];
    NSString *selectedText = newDetails.airport;
    [[NSUserDefaults standardUserDefaults] setObject:selectedText forKey:@"st"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    [self dismissViewControllerAnimated:YES completion:nil];
}
1
Chanaka Caldera 4 janv. 2016 à 09:13

2 réponses

Meilleure réponse

Vous pouvez utiliser UISearchController dans iOS 9

Déclarez d'abord une propriété pour UISearchController

@property (strong, nonatomic) UISearchController *searchController;

Puis, dans viewDidLoad

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;

Lors de la création du UISearchController, nous n'avons pas besoin d'un contrôleur de résultats de recherche distinct car nous utiliserons le UITableViewController lui-même. De même, nous utiliserons également UITableViewController pour mettre à jour les résultats de la recherche en lui faisant implémenter le protocole UISearchResultsUpdating. Nous ne voulons pas atténuer le contenu sous-jacent car nous voulons afficher les résultats filtrés au fur et à mesure que l'utilisateur tape dans la barre de recherche. Le UISearchController se charge de créer la barre de recherche pour nous. Le UITableViewController agira également en tant que délégué de la barre de recherche lorsque l'utilisateur modifie la portée de la recherche.

Ensuite, ajoutez searchBar à l'en-tête de la vue table

self.tableView.tableHeaderView = self.searchController.searchBar;

Puisque la vue de recherche couvre la vue de table lorsqu'elle est active, nous faisons en sorte que UITableViewController définisse le contexte de présentation:

self.definesPresentationContext = YES;

Nous devons implémenter le délégué UISearchResultsUpdating pour générer les nouveaux résultats filtrés à chaque fois que le texte de recherche change:

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
  NSString *searchString = searchController.searchBar.text;
  [self searchForText:searchString scope:searchController.searchBar.selectedScopeButtonIndex];
  [self.tableView reloadData];
}
22
Bowdzone 4 janv. 2016 à 07:13

Vous pouvez apprendre avec Apple Sample Guide : Recherche de table avec UISearchController.

“Table Search with UISearchController” est un exemple d'application iOS qui montre comment utiliser UISearchController. Un contrôleur de recherche gère la présentation d'une barre de recherche (de concert avec le contenu du contrôleur de vue des résultats).

1
SeraZheng 4 janv. 2016 à 06:26